2017-03-16 94 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%" 
    ) 
    
相关问题