2015-05-11 52 views
1

我試圖掃描文件裏面的文本directorys,但每遇到一個文件,有'複製'從窗口添加到它的結尾,程序不會閱讀。我試過在名字中使用引號,但沒有骰子。For循環讀取文件名與空格

FOR /R %%F in (*.CDP) do (
    for /f "tokens=*" %%a in (%%~nxF) do (

我一直在使用此代碼,並沒有與我看到的典型文件的問題。然而,如果它的東西像dummy_file - 複製,我會從程序中得到一個錯誤,說'系統找不到文件dummy_file'。包括期間。如果我使用

FOR /R %%F in (*.CDP) do (
     for /f "tokens=*" %%a in ("%%~nxF") do (

然後第二個for循環被跳過,程序繼續。我認爲這會讓循環把它當作一個字符串文字,但顯然for循環有自己的閱讀方式。

是否有可能接受這個循環中有一個文件 - 複製它們?我能在這裏使用dummy_file - Copy.cdp嗎?

+1

嘗試用'「delims =」'替換''tokens = *「'。 – rojo

+0

rojo:產生相同的錯誤 – AnDanDan

+0

(* .cdp)do中的for/R %% F做了什麼(有「%%〜nxF」)?如果你打算按摩和標記每個文件名的部分,或者如果你打算處理每個文件的內容(在這種情況下你應該把''%%〜引號中的nxF「'並添加'usebackq'選項)。我想知道如果你沒有粘貼你的代碼的其他部分是真正的問題所在。您是否試圖「設置」變量= %%〜nxF「'而忽略啓用延遲擴展,當你去檢索'!variable!'也許? – rojo

回答

1
for /R %%F in (*.CDP) do (
    for /F "usebackq delims=" %%A in ("%%~fF") do (

變化:

  1. 不是檢索所有的令牌,該代碼禁用分隔符

  2. 作爲文件名是引用,usebackq被包括以表明我們不處理直接字符串,但文件內容

  3. 由於代碼遞歸文件夾,如果想法是讀取文件c然後直接使用文件名和擴展名,需要完整路徑,因爲文件位置可能與當前目錄不同