使用批处理文件

时间:2017-03-16 14:36:20

标签: batch-file

这是我在这里的第一个问题,如果我打破任何礼仪,请原谅我!

基本上,我想要做的是:

将文件从文件夹a移动到文件夹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

此代码将移动没有空格的文件,但我希望将该文件夹中的任何内容移动到下一个文件夹。

非常感谢您对此主题的任何帮助!

谢谢, 丹。

3 个答案:

答案 0 :(得分:1)

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

delims=禁用默认分隔符(包括空格)和move语句中的引号会导致引用的字符串被视为单个实体。

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

for /?

来自文档提示

答案 1 :(得分:0)

如果要移动文件夹中的所有文件,为什么不使用*。*?

move %src_folder%\*.* %tar_folder%

要移动带空格的文件,您需要在文件名周围加上双引号。

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

答案 2 :(得分:0)

  1. for /F将行拆分为由whate-spaces分隔的标记,默认情况下返回第一个标记,因此您需要指定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%"
    )