我正在尝试在批处理文件中创建自动化,以从文件名创建文件夹,并将具有不同文件名的文件移动到这个新创建的文件夹中。 我有一堆 Excel 文件,这些文件中的前几个标记是相同的。 因此,对于创建的文件夹,我需要删除前 12 个令牌和扩展名。 只能调整文件名,但文件夹需要相同的名称,不带扩展名.xlsx。
我看到了这段代码并尝试调整它。
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "SourceDir=C:\Bureaublad\1"
set "DestDir=C:\Bureaublad\1"
for /F "eol=| delims=" %%A in ('dir /B /A-D-H "%SourceDir%\Kamekllofis*.*" 2^>nul') do (
for /F "eol= tokens=1 delims=." %%B in ("%%~nA") do (
md "%DestDir%\%%B" 2>nul
set "FileName=%%A"
call move /Y "%SourceDir%\%%A" "%DestDir%\%%B\%%FileName:~12%%"
)
)
尝试过这个
md "%DestDir%\%%B:~12%%" 2>nul
我只需要删除文件名中的第一个字符和扩展名 .xlsx
您知道如何创建正确的文件名。为什么不使用相同的方法来创建正确的文件夹名称?顺便说一句 - 当您使用修饰符时,您不需要第二个
for
循环(请参阅 for /?
)
...
for /F "eol=| delims=" %%A in ('dir /B /A-D-H "*.pdf" 2^>nul') do (
set "FName=%%~nA"
call md "%DestDir%\%%FName:~12%%" 2>nul
call move /Y "%SourceDir%\%%A" "%DestDir%\%%FName:~12%%\%%FName:~12%%%%~xA"
)