2009-10-08 35 views

回答

1

你可以引用包含文件名變量:

"%%a" 
+0

這還不夠:-) – Joey 2009-11-17 23:08:57

2
for %%a IN (*.mp3) do (
    call c:\PROGRA~1\mp3splt\mp3splt -t 5.0 -o output\@[email protected][email protected] "%%a" 
) 

別人在說什麼這裏引用變量無疑是正確的。這需要它正常工作。但它也只是解決方案的一半。

你這裏的問題是,dir /b吐出行文字,每一個都包含一個文件名,例如:在另一方面

foo bar.mp3 
baz gak.mp3 
track01.mp3 
... 

for /f被用於讀取文件或其他東西造(將dir輸出在這種情況下)逐行... 它也做標記。這意味着它將可配置位置的字符串分割成單獨的標記。

默認情況下,/ F通過從每個 文件的每一行的第一個空白 分離令牌。空白行被跳過。您可以通過指定可選的 「選項」參數來覆蓋默認解析 行爲。這是一個引用的 字符串,其中包含一個或多個 關鍵字以指定不同的解析 選項。 - help for

所以你只能得到文件名的第一個空格之前的部分。您可以通過使用

for /f "delims=" in ... 

指定標記化應無定界符來完成,每次基本上是給你的整條生產線的工作解決這一問題。但更好的方法實際上是我在開始時概述的使用常規for迭代文件。文件名中沒有空格,這實際上使你的意圖更加清晰。

我經常感到驚訝,爲什麼人們傾向於選擇一個簡單,明確,正確的解決方案和錯誤的解決方案。

+0

不錯的答案,ty! – 2009-11-17 23:16:46