我正在尝试在 Windows 7 中创建一个批处理脚本,该脚本将查看 100 个 pdf 的前 6 个数字,根据这 6 个唯一数字创建一个文件夹,然后将 pdf 移动到其相应的文件夹中。 (有些 .pdf 具有相同的 6 个唯一数字)
下面的批处理对我来说几乎有效。它为每个唯一的 6 号 pds 创建文件夹,但不会移动所有文档:例如:以下移动到 100036 文件夹 100036.pdf 将移动,1000361.pdf 将移动。1000361copy 将移动。
当文件名中有空格时,不会移动到100036文件夹。100036 - 1.pdf、100036 - copy.pdf不会移动
任何想法如何解决这一问题?
先感谢您:
@echo off
REM This script creates folders based on file names and moves those files into the folders.
REM *.pdf is the search term. Change this to search for different files.
REM md %name:~0,6% will make a directory based on the first 6 characters of the file name. Change to 5% for the first 5 characters.
REM move %* %name:~0,6% will move the file to the directory based on the first 6 characters of the file name. Change to 5% for the first 5 characters.
for /f %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
goto :eof
:sub1
set name=%1
md %name:~0,6%
move %* %name:~0,6%
編輯:
@echo off
for /f "tokens=*" %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
goto :eof
:sub1
set name=%1
md %name:~0,6%
move %* %name:~0,6%
答案1
因为for /f
使用空格字符进行拆分,为了处理完整的文件名,您应该添加“tokens = *”选项:
for /f "tokens=*" %%F in ('dir/b/a-d *.pdf') do call :sub1 %%F
更新: 由于空格字符,还需要引用 mv:
move "%*" "%name:~0,6%"