توسيع المتغير التعسفي إلى محرك أقراص، مسار إلخ. في دفعة DOS

StackOverflow https://stackoverflow.com/questions/2238444

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أستخدم دفعة DOS التي تعالج الملفات باستخدام المعلمة المرة:

process.bat "D:\PROJECT\TEST FILES\test.pdf" 72

process.bat:

gswin32c -r%2 -sDEVICE=jpeg -sOutputFile="%~n1-%%d.jpg" -- "%~1"

يمكننا أن نرى أن المعلمة توسعت إلى اسم الملف في الدفعة: %~n1وبعد ومع ذلك، طلب مني إعادة كتابة الدفعة لقراءة المعلمات من ملف نصي:

params.txt.

1 D:\PROJECT\TEST FILES\test.pdf
2 72

لذلك قمت بتعديل معالجة:

for /f "tokens=1,*" %%A in ('type ..\params.txt') do set P%%A=%%B
gswin32c -r%P1% -sDEVICE=jpeg -sOutputFile="%~nP2%-%%d.jpg" -- "%~1"

ولكن٪ ~ np2٪ لا يعمل.

لقد وجدت ذلك for /f "tokens=*" %%A in (%P1%) do %%~dA يمكن أن تساعدني لكنها تبدو مرهقة.

فهل هناك أي طريقة أخرى لتوسيع المتغير التعسفي إلى اسم أو محرك الأقراص أو المسار وما إلى ذلك؟

هل كانت مفيدة؟

المحلول

نعم، أولئك الذين يعملون فقط مع الحجج الخاصة القائمة على الأرقام. ولكن يمكنك تحويل المتغير الخاص بك إلى واحد عن طريق تمريره إلى روتين فرعي في ملف الدفعات. مثال:

@echo off
set P1=D:\PROJECT\TEST FILES\test.pdf
call :Split %P1%
echo %FNAME%
exit /b 0

:Split
set FNAME=%~n1
exit /b 0

... يطبع "اختبار" (اسم جزء من test.pdf)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top