0
我想要有3個文件夾,A-G,H-T和U-Z。我希望文件能夠根據名稱的第一個字母通過批次自動分類到這些文件夾中。任何方式來做到這一點?謝謝!批處理:將文件移動到名稱的第一個字母的文件夾?
我想要有3個文件夾,A-G,H-T和U-Z。我希望文件能夠根據名稱的第一個字母通過批次自動分類到這些文件夾中。任何方式來做到這一點?謝謝!批處理:將文件移動到名稱的第一個字母的文件夾?
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
SET "destdir=U:\destdir"
PUSHD "%sourcedir%"
FOR %%a IN (*) DO (
IF /i "%%a" geq "a" IF /i "%%a" lss "h" ECHO(MOVE "%sourcedir%\%%a" "%destdir%\A-G\"
IF /i "%%a" geq "h" IF /i "%%a" lss "u" ECHO(MOVE "%sourcedir%\%%a" "%destdir%\H-T\"
IF /i "%%a" geq "u" (
IF /i "%%a" lss "z" (ECHO(MOVE "%sourcedir%\%%a" "%destdir%\U-Z\"
) ELSE (
SET "name=%%a"
IF /i "!name:~0,1!"=="Z" ECHO(MOVE "%sourcedir%\%%a" "%destdir%\U-Z\"
)
)
)
popd
GOTO :EOF
你需要改變的sourcedir
和destdir
設置以適合你的情況。
出於測試目的,所需的COPY命令僅僅是ECHO
。 驗證命令是否正確後,將ECHO(COPY
更改爲COPY
以實際複製文件。追加>nul
來抑制報告消息(例如,1 file copied
)
困難的部分是比較名稱與(大於Z的東西)。不幸的是,[
和{
都不適用於這個位置。 if
方面都[
和{
爲低於A
- 甚至NUMERICS ...
因此,對於開始z
文件名,採用特定的測試。
難道你不能在這裏使用'leq「z」'? –
@DennisvanGils:不需要考慮「z.txt」。這比'z'大。根據ASCII,'['應該是'Z' + 1和'{'是'z' + 1。根據'cmd','{'和'['小於'0' ...令人驚訝的是,但是真的... – Magoo
有些人忘恩負義。從我這裏+1 – LotPings