我需要根据文件名将文件从目录移动到另一个目录。文件格式为12345 123456.pdf
,其中2个字符串长度可以变化。但它们之间总会有一个空格,它们总是PDF文件。
目标目录是SAME NAME,作为文件名的第一个字符串(例如10003075 3000101012.pdf
目标目录为10003075
)。
如果目标目录不存在,我不希望它被创建。该文件应保留在初始目录中。
文件结构如下:
Main Folder
|
Destination Directories
Files waiting to be moved Directory
|
Batch file
因此批处理文件必须检查它所在的pdf文件目录,然后检查其上方的目录,找到与文件名中第一个字符串对应的目录,然后将该文件移动到该目录,只要它存在否则将文件留在原处。
我已经处理了一些有关stackoverflow的建议,但是我看到的所有内容都会创建目录,或者如果目录不存在,则将文件移动到主目录。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /f "tokens=1*delims= " %%a IN (
'dir /b /a-d "* *.pdf" '
) DO (
IF EXIST "..\%%a\." (ECHO(MOVE "%%a %%b" "..\%%a\") ELSE (ECHO(Leave "%%a %%b")
)
popd
GOTO :EOF
您需要更改sourcedir
的设置以适合您的具体情况。将其分配给%~dp0
是可能的。
给定(%sourcedir%的部分目录/ a:d)
20/01/2015 09:49 <DIR> one
20/01/2015 09:49 <DIR> t w o
20/01/2015 09:50 <DIR> 1232
20/01/2015 09:50 <DIR> 1234
和PDF格式的源代码:
目录u:\ sourcedir \ t w o
20/01/2015 09:50 0 dum myfile2.pdf
20/01/2015 09:50 0 1231 54321.pdf
20/01/2015 09:50 0 1232 54321.pdf
20/01/2015 09:50 0 1233 54321.pdf
20/01/2015 09:50 0 1234 54321.pdf
20/01/2015 09:50 0 1235 54321.pdf
6 File(s) 0 bytes
这会产生
Leave "dum myfile2.pdf"
Leave "1231 54321.pdf"
MOVE "1232 54321.pdf" "..\1232\"
Leave "1233 54321.pdf"
MOVE "1234 54321.pdf" "..\1234\"
Leave "1235 54321.pdf"
为了测试目的,所需的MOVE命令仅为ECHO
。 在您确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加>nul
以取消报告消息(例如1 file moved
)
Leave
消息及其关联的else
子句当然是可选的。