我已經編寫了一個視頻轉換批處理,用戶可以簡單地將他的視頻從任何磁盤或分區拖放到批處理中,之後轉換後的視頻將保存在特定磁盤上的特定位置。如何應付批處理文件中%*的不一致文件名格式
的代碼看起來像這樣
@echo off
%~d0
cd %~p0
for %%f in (%*) do ...
pause
實際的問題在於(%*)
。
當我的文件名稱中有一個結束圓括號時,批處理將不起作用。爲了解決這個問題,我使用了("%*")
,但這不適用於名稱中包含空格的文件或多個文件。
我也試過(%~*)
但這是無效的。
一些研究,我發現,當我把多個文件的批次名稱file(test)
和file test
,%*
解析
file(test) "file test"
這意味着一個文件名可能有引號,或沒有以後。 。
我的問題是:我該如何處理?
理想情況下,我想%*
解析爲"file(test)" "file test"
(這兩個名字引號包圍包裹)
副作用:請注意,您可以使用'pushd%〜dp0'而不是'%〜d0' +'cd%〜p0'。一方面的好處是,如果你想回到你的原始文件夾,你可以在最後做一個'popd'。 – 2013-03-11 19:23:29
或者'pushd',你可以使用'cd/d%〜dp0'。 – 2013-03-11 20:44:01