批量问题 - 创建文件夹和移动文档

批量问题 - 创建文件夹和移动文档

我正在尝试在 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%"

相关内容