这是我在这里的第一个问题,如果我打破任何礼仪,请原谅我!
基本上,我想要做的是:
将文件从文件夹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
此代码将移动没有空格的文件,但我希望将该文件夹中的任何内容移动到下一个文件夹。
非常感谢您对此主题的任何帮助!
谢谢, 丹。
答案 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)
for /F
将行拆分为由whate-spaces分隔的标记,默认情况下返回第一个标记,因此您需要指定tokens=*
或delims=
。此外,for /F
默认忽略以;
开头的行,因此请eol=
选项指定另一个字符;对于文件或目录路径,我通常会声明eol=|
,因为|
字符不能出现在路径中。使用引用的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%"
)