0
我正在嘗試使批文件轉換和複製文件,同時保持子文件夾的層次結構。批處理-mkdir在循環中給出「文件名,目錄名稱或卷語法不正確」
到目前爲止我的代碼(麻煩的部分)爲:
cd "%inputdir%"
setlocal disableDelayedExpansion
for /f "delims=" %%A in ('forfiles /s /m *.tga /c "cmd /c echo @relpath"') do (
set "file=%%~A"
setlocal enableDelayedExpansion
echo !file:~1,-4!
echo %inputdir%!file:~1!
set filenametmp=%outputdir%!file:~1,-4!.paa
echo %outputdir%!file:~1,-4!.paa
For %%A in ("%filenametmp%") do (
Set foldertmp=%%~dpA
)
IF NOT EXIST "%foldertmp%" (
mkdir "%foldertmp%"
)
endlocal
)
問題是與創建的文件夾的一部分。在設置文件名tmp下的回顯給出了「C:\ Users \ Asheara \ Desktop \ cicik \ BI \ M14 \ data \ M14_body_CO.paa」,這是正確的
對於它應該得到路徑的目錄部分(「 C:\用戶\ Asheara \桌面\ cicik \ BI \ M14 \數據「)和它的作品,如果我這樣做:
For %%A in ("C:\Users\Asheara\Desktop\cicik\BI\M14\data\M14_body_CO.paa") do (
Set foldertmp=%%~dpA
)
循環之前(上面的代碼,我之前粘貼)。但是在這個循環內部,它總是會拋出這個錯誤,儘管對於它自己和輸入數據是相同的。
有誰知道如何處理這個問題? 感謝
編輯: 這是工作的結果:
cd "%inputdir%"
setlocal disableDelayedExpansion
for /f "delims=" %%A in ('forfiles /s /m *.tga /c "cmd /c echo @relpath"') do (
set "file=%%~A"
setlocal enableDelayedExpansion
set filenametmp=%outputdir%!file:~1,-4!.paa
setlocal enableDelayedExpansion
For %%A in ("!filenametmp!") do (
Set foldertmp=%%~dpA
)
setlocal enableDelayedExpansion
IF NOT EXIST "!foldertmp!" (
mkdir "!foldertmp!"
)
endlocal
)
還需要更改'%filenametmp%'爲'!filenametmp!' – 2015-02-06 16:15:29
非常感謝,這有所幫助。我會用最終結果更新問題:)如果您不介意,我是否也可以問如何讓它搜索更多的文件類型?我用[這個答案](http://stackoverflow.com/questions/11719347/using-forfiles-with-multiple-file-types-for-search-mask)和第一個看起來像'for/f「delims =」 %% A in('for %% G in(.tga,.png)do'forfiles/s/m * %% G/c「cmd/c echo @relpath」'')do(...'and that說:「系統找不到%G的文件...」 – Asheara 2015-02-06 18:08:51
@Asheara你應該創建一個新的問題來問這個問題 – aphoria 2015-02-06 18:27:09