我正在嘗試在 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%"