2017-03-16 87 views
0

這是我在這裏的第一個問題,所以請原諒我,如果我違反任何禮節!使用批處理文件在名稱中使用空格移動文件

基本上,我想做的事是這樣的:從文件夾

將文件移動到文件夾B。 將文件夾從文件夾c移到文件夾d。

我希望這種情況持續發生在同一個腳本中。以下是我目前的代碼。

:loop 

echo Ooops 

SET src_folder=C:\Users\user\Desktop\a 
SET tar_folder=C:\Users\user\Desktop\b 
SET src_folder1=C:\Users\user\Desktop\c 
SET tar_folder1=C:\Users\user\Desktop\d 

for /f %%a IN ('dir "%src_folder%" /b') do move %src_folder%\%%a %tar_folder% 
for /f %%a IN ('dir "%src_folder1%" /b') do move %src_folder1%\%%a %tar_folder1% 

timeout 3 

goto loop 

此代碼將移動文件沒有空格,但我希望在該文件夾中的任何內容被移動到下一個。

任何有關這個主題的幫助,高度讚賞!

謝謝, 丹。

回答

0

如果你想移動文件夾中的所有文件,爲什麼不使用*。*?

move %src_folder%\*.* %tar_folder% 

要用空格移動文件,您需要在文件名周圍加雙引號。

for /f %%a IN ('dir "%src_folder%" /b') do move "%src_folder%\%%a" %tar_folder% 
+1

可能出現了'delims ='或'一個令牌= *'與含有空格的文件/文件夾的名稱處理當在缺少/ F的選擇。 – LotPings

1
for /f "DELIMS=" %%a IN ('dir "%src_folder%" /b') do move "%src_folder%\%%a" %tar_folder% 

delims=禁用默認的分隔符(包括空格),並在move聲明引號引起引號的字符串被視爲一個單一實體。

如果您願意,也可以引用目的地。

看到

for /? 

從提示文檔

0
  1. for /F分割線成whate-空格分隔的令牌,並返回默認的第一個標記,所以你需要指定tokens=*delims=。此外,默認情況下,for /F將忽略以;開頭的行,因此請通過eol=選項指定另一個字符;對於文件或目錄路徑,我通常指定eol=|,因爲|字符不能出現在路徑中。
  2. 在文件和目錄路徑周圍加上引號。
  3. 使用引用的set語法set "VAR=Value"(引號不成爲值的一部分,但它們避免了某些特殊字符或不需要的尾隨空格)。

    set "src_folder=C:\Users\user\Desktop\a" 
    set "tar_folder=C:\Users\user\Desktop\b" 
    
    for /F "delims= eol=|" %%a in ('dir /B "%src_folder%"') do (
        move "%src_folder%\%%a" "%tar_folder%" 
    )