批次問題 - 建立資料夾和移動文檔

批次問題 - 建立資料夾和移動文檔

我正在嘗試在 Windows 7 中建立批次腳本,該腳本將查看 100 個 pdf 的前 6 個數字,根據這 6 個唯一數字建立一個資料夾,並將 pdf 移至其相關的資料夾中。 (有些 .pdf 有相同的 6 個唯一編號)

下面的批次幾乎對我有用。它為每個唯一的 6 個數字 pd 建立資料夾,但不會移動所有文件:例如:以下移動到 100036 資料夾 100036.pdf 將移動,1000361.pdf 將移動。 1000361副本將移動。

當檔案名稱中有空格時,不會移動到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%"

相關內容