2013-07-31 98 views
1

我有一個包含像遍歷批處理某些文件

file.xxx.v3.0.sql 
file.xxx.v3.0.sql 
file.xxx.v3.0.sql 
file.xxx.v3.0.sql 

.sql文件在.bat文件中的目錄會怎樣我經歷了所有的目錄中有啓動文件循環「的文件。」並以「.v3.0.sql」結尾?

到目前爲止,我已經得到了

for /f %%b in ('dir /b /s "%apppath%\files\*.sql"') do call :import %%b 

回答

2

放棄了for /f路線。有龍(對於Unicode字符和空格,特別是 - 最好不要接受任何壞習慣)。

您可以使用普通的舊for,可就好了遍歷文件:

for %%b in (%apppath%\files\file.*.v3.0.sql) do (
    call :import %%b 
) 
+0

+1不要忘記提及只存在於普通'for'循環中的龍。 (在循環中修改的文件可能會被處理兩次)。在所有cmd.exe **命令中都隱藏着龍:)** –

+0

那麼,修改你正在迭代的任何語言的集合並不是很明智;) – Joey

+0

同意,但有些人仍然會嘗試。 **:P ** –

2

這應該工作你的情況:

for /f %%b in ('dir /b /s "%apppath%\files\file.*.v3.0.sql"') do call :import %%b 

您還可以使用大括號這樣的:

for /f %%b in ('dir /b /s "%apppath%\files\file.*.v3.0.sql"') do (
    call :import %%b 
    ... 
) 
+0

謝謝你,是不是也可以使用括號像'FOR/F %% b在('DIR/B/S 「%apppath%\ files \ file。*。v3.0.sql」')do(:: Processing goes here)' – Pattle

+0

@Pattle是的,我已經更新了答案。 –

+0

這很可能會抱怨'做'不是一個命令。 – Joey

相關問題