我試圖在搜索某些文件類型時只從一個已知路徑中獲取一個目錄名稱。在下面的例子中,我正在搜索mp4視頻文件,然後我想將它們轉換並將它們移動到不同父目錄中同名的子目錄中。直到文件的直接父目錄,路徑才知道,所以我試圖刪除已知部分的路徑。雖然這給了我很多麻煩。在下面的示例中,set命令後變量newDir
爲空,它僅顯示輸入~13
且啓用了@echo。誰能告訴我我做錯了什麼?批處理 - 通過某個文件類型循環刪除子字符串
例子:
setlocal enabledelayedexpansion
FOR /R %%X in ("*.mp4") DO (
set currDir="%%~pX" &REM "\test1\test2\dir1"
set newDir=%currDir:~13% &REM dir1
mkdir "C:\new\%newDir%" &REM suppose to be "C:\new\dir1", mine is just "C:\new\"
REM convert mp4 here
cp %%X "C:\new\%newDir%" &REM copies the file
)
事情看起來有點時髦與報價(我需要因爲一些目錄名有空格)和驚歎號。就像它試圖使目錄'「C:\ new \ dir1 \」',但在初始測試似乎工作。我需要額外的測試來確保它不會與其他東西混淆。 – user3499973 2014-09-02 03:53:56
第二次看,它不會工作。使用'「C:\ new \!newDir!」'的轉換輸出嘗試創建一個輸出文件'「C:\ new \ dir1 \ \ output.out」「或者」C:\ new \ dir1 \ output.out 「(取決於我是否添加斜槓),在這兩種情況下給出」找不到指定的路徑「。 – user3499973 2014-09-02 04:04:46
''C:\ new \ dir1 \「'中的空格在每行之後都是來自'」&REM ...「的實際內容。請刪除它們,或將它們放在其他行中。 – Landys 2014-09-02 06:29:10