我有一个名为1830AE16C excel
的文件夹
我想使用1830AE16C
重命名此文件夹中的文件。
(之前)
1_1234AE16C
2_5559AE15C
4_1000AE16E_pay
(之后)
1_1830AE16C
2_1830AE16C
4_1830AE16C_pay
我已经尝试过了:
@echo off
Setlocal enabledelayedexpansion
for %%I in (.) do set CurrDirName=%%~nxI
SET Replace=%CurrDirName: DOC=%
ECHO %Replace%
Set /p Pattern="Old name: "
For %%a in (*%Pattern%*.*) Do (
Set "File=%%a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
如何省略询问输入文本的步骤?
答案 0 :(得分:1)
我稍微重写了您的脚本。它不再使用变量,因此不需要延迟扩展:
@echo off
for /d %%I in (*) do (
for /f "tokens=1,*" %%A in ("%%I") do (
Echo Foldername: %%I
Echo First part: %%A
Echo Secnd part: %%B
for %%F in ("%%I\*") do (
Echo Filename: %%F
for /f "tokens=1,2,* delims=_" %%X in ("%%~nxF") do (
if "%%Z"=="" (
ECHO ren "%%F" "%%X_%%A"
) else (
ECHO ren "%%F" "%%X_%%A_%%Z"
)
)
)
)
)
我插入了Echo
行用于故障排除/显示会发生什么情况。
出于安全原因,我还通过ren
禁用了ECHO
命令。在实际启用输出之前,请分析输出(如果正是您想要的输出)。