Windows 批量将所有文件移动到可变文件夹名称
我有一个批处理过程,在6月份按天组织下载几个文件。下载后,我会处理它们,然后我想把它们放到一个文件夹中,按天分开。对于一位数的天数,请致电01、02、。。。等等。所以我创建文件夹,然后移动它们:Windows 批量将所有文件移动到可变文件夹名称,windows,batch-file,Windows,Batch File,我有一个批处理过程,在6月份按天组织下载几个文件。下载后,我会处理它们,然后我想把它们放到一个文件夹中,按天分开。对于一位数的天数,请致电01、02、。。。等等。所以我创建文件夹,然后移动它们: SETLOCAL EnableDelayedExpansion SET "year=2015" for /l %%x (9, 1, 10) do ( (download files here to C:\mydir\) (process files here in C:\mydir\)
SETLOCAL EnableDelayedExpansion
SET "year=2015"
for /l %%x (9, 1, 10) do (
(download files here to C:\mydir\)
(process files here in C:\mydir\)
SET "day=0000%%x"
mkdir C:\mydir\files\%year%-06-!day:~-2!
move C:\mydir\*.* C:\mydir\files\%year%-06-!day:~-2!
)
以下是我经常遇到的错误:
The filename, directory name, or volume label syntax is incorrect.
在这种情况下,将创建文件夹,但不会移动文件。相反,它们只是消失了
另一个:
The directory name is invalid.
Cannot move multiple files to a single file.
在这里,文件只是停留在周围
我会说,在运行了100次之后,我几乎总是会收到其中一条消息。有一次,它像预期的那样移动。还有几次,它移动了除一个以外的所有文件,而那个文件就消失了。另一次,控制台说它移动了,但他们没有
我有很多代码围绕着这个块,所以可能它干扰了这个部分;但是,没有重复变量名,我在运行这个过程时,所有其他进程都被注释掉了。所以我被困在这里了。我在另一个SO线程上发现了日期命名语法,所以可能我还没有完全理解它 如果没有可移动的对象,则会引发第一个错误。请参见从my CLI窗口复制和粘贴的下一个示例:
==>move D:\xxxx\*.* D:\xxx
D:\xxxx\abc.txt
D:\xxxx\cba.txt
2 file(s) moved.
==>move D:\xxxx\*.* D:\xxx
The filename, directory name or volume label syntax is incorrect.
==>
我误解了为什么要为%x=9和%x=10循环两次代码:。但是,如果存在,请尝试C:\mydir\*.ext。。。其中.ext是下载文件的扩展名。请注意,对于任何甚至为空的现有文件夹,exist C:\mydir\*.*的计算结果为true
为了捕捉第二个错误,因为移动目标被认为是一个文件,所以最后用一个尾随的反斜杠结束它,我将重写脚本,如下所示:
@ECHO OFF >NUL
SETLOCAL EnableDelayedExpansion
SET "year=2015"
for /l %%x in (9, 1, 10) do (
rem (download files here to C:\mydir\)
rem insert here: if exist C:\mydir\*.ext (
rem (process files here in C:\mydir\)
SET "day=0000%%x"
call :myMove
rem insert here closing parenthesis of 'if' command: )
)
endlocal
goto :eof
:myMove
echo ON >NUL
mkdir "C:\mydir\files\%year%-06-%day:~-2%" 2>NUL
move "C:\mydir\*.*" "C:\mydir\files\%year%-06-%day:~-2%\"
@ECHO OFF >NUL
goto :eof
`移动C:\mydir**C:\mydir\files\%year%-06-!日期:~-2!\`用后面的反斜杠结束目标目录?是的,试过了。遗憾的是,这并没有什么不同。循环代码两次只是为了说明我在多天内运行它,所以在这种情况下,我会为第9天、第10天创建文件夹。无论如何,使用%而不是!今天工作顺利-谢谢。