Sti*_*ire 5 windows command-line batch-file
我有一个文件夹,其中包含数千个以某种方式命名的 pdf 文件,以及我想要复制到另一个文件夹的文件列表。
- "abcd0000000001-00.pdf"
- "abcd0000000001-01.pdf"
- "abcd0000000001-02.pdf" // copy abcd0000000001-02.pdf
- "abcd0000000002-00.pdf"
- "abcd0000000002-01.pdf"
- "abcd0000000002-02.pdf"
- "abcd0000000002-03.pdf" // copy abcd0000000002-03.pdf
- "abcd0000000003-00.pdf"
- "abcd0000000003-01.pdf"
- "abcd0000000004-00.pdf"
- "abcd0000000004-01.pdf"
- "abcd0000000004-02.pdf"
- "abcd0000000004-03.pdf"
- "abcd0000000004-04.pdf" // copy abcd0000000004-04.pdf
- ...
- "abcd000000000n-nn.pdf" // copy abcd000000000n-[highest].pdf
Run Code Online (Sandbox Code Playgroud)
我不想复制每个 pdf 文件,只想复制每个文件中升序编号最高的文件。
我找到了Vomit IT - Chunky Mess Style的这段代码
FOR /F "USEBACKQ TOKENS=*" %F IN ("C:\Folder\FileList.txt") DO XCOPY /F /Y "C:\SourceFolder\%~F" "C:\DestinationFolder\"
Run Code Online (Sandbox Code Playgroud)
如何编辑这行代码以每次获得最高的升序数?
在循环中列出您的文件For /F并获取在第一个标记(默认)中返回的字符串 e 并设置-为分隔符,然后按相反顺序按名称过滤您的文件,如果目标文件夹中不存在则复制第一个...
@echo off
cd/d "D:\The\Full\Path\To\Your\.Pdf\Files\Folder"
set "_list=D:\The\Full\Path\To\Your\List\File.txt"
set "_target=D:\The\Full\Path\To\Your\Target\Folder"
for /f "usebackdelims=-" %%a in (`type "%_list%"^|findstr \-[0-9][0-9]\.pdf
`)do for /f "tokens=*delims=-" %%i in ('dir /o:-n /a:-d /b "%%~a-??.pdf"
')do if not exist "%_target%\%%~a-??.pdf" ;copy "%%~fi" "%_target%\"
Run Code Online (Sandbox Code Playgroud)
按名称以相反的顺序列出文件/o-n,当文件夹中不存在时复制每个文件,假设/替换-NumberNumber分隔符为-??.
@echo off
cd /d "D:\The\Full\Path\To\Your\.Pdf\Files\Folder"
set "_Target_Dir=D:\The\Full\Path\To\Your\Target\Folder"
for /f tokens^=1*delims^=- %%i in ('dir /o-n /a-d /b *-??.pdf
')do if not exist "%_Target_Dir%\%%~i-??.pdf" copy "%%~i-%%~j" "%_Target_Dir%"
Run Code Online (Sandbox Code Playgroud)
其他资源:
Dir /?Set /?For /?For /F /?
If Condition() Else If Condition() Else()cmd.exe解析脚本| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |