這是我在這里的第一篇文章。我只有一些非常基本的批處理腳本知識。
我有一個 D:\SOURCE 目錄,其中包含帶有影像的子目錄。我正在使用命令列程式(Irfanview)來調整影像大小并將其轉換為不同的格式。我使用 FOR /D 回圈來查看 D:\SOURCE 中的所有檔案夾并將整個路徑存盤到 %d 中的子檔案夾,然后使用 IF 回圈來忽略目標中已經存在的檔案夾。
這是我的代碼:
FOR /D %%d IN ("D:\SOURCE\*") DO (
if NOT exist D:\DESTINATION\%%~nd (
"%ProgramFiles%\IrfanView\i_view64.exe %%d\*.tif /resize=(50p,50p) /dpi=(150,150) /resample /convert=D:\DESTINATION\%%~nd\*.jpg"
)
)
這里的問題是“C:\Program Files”中的空間。除非用引號括起來,否則該路徑不起作用。另一方面,整個句子需要用引號引起來,否則 %d 和 %~nd 將不起作用。因此,我需要在整個帶引號的字串中用引號將 .exe 的路徑括起來。我在這里閱讀了很多解決類似問題的帖子,但沒有一個解決方案對我有用。既不是 ",也不是 ^","",""",也不是將 "C:\Program Files\IrfanView\i_view64.exe" 宣告為變數。
這一定是一種非常常見的情況,所以我確信一定有一個我忽略的非常基本的解決方案。或者也許我的整個方法是錯誤的,還有另一種明顯的方法可以做到這一點。我感謝所有的答復。
uj5u.com熱心網友回復:
你想部分參考引數,一個好的程式應該理解參考的引數。
FOR /D %%d IN ("D:\SOURCE\*") DO (
if NOT exist D:\DESTINATION\%%~nd (
"%ProgramFiles%\IrfanView\i_view64.exe" "%%d\*.tif" ^
/resize="(50p,50p)" ^
/dpi="(150,150)" ^
/resample ^
/convert="D:\DESTINATION\%%~nd\*.jpg"
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/478122.html
上一篇:如何將變數的值設定為批處理中另一個變數(參見代碼)定義的陣列槽的值
下一篇:如何從字串中洗掉多個單詞Java
