我正在尝试拼凑一个批处理文件,将当前文件夹名称作为前缀添加到该文件夹中的所有文件。此外,这需要能够多次运行而不会重复前缀。
我发现这个几乎就是我需要的!唯一的问题是每次运行时都会重复前缀。如果有人能给我指明正确的方向,我会非常感激!
@echo off
pushd "Folder"
for /d %%D in (*) do (
pushd "%%D"
for /r %%F in (*) do (
for %%P in ("%%F\..") do (
ren "%%F" "%%~nxP_%%~nxF"
)
)
popd
)
popd
这是由https://superuser.com/users/109090/dbenham针对这个问题将文件夹名称添加到文件名开头
答案1
下一个代码片段展示了一种可能的方法(众多方法之一);请注意,操作ren
命令仅仅echo ren ...
为了调试目的而被回显():
@ECHO OFF
SETLOCAL EnableExtensions
goto :skipProcedures
:testPrefix
call set "newN=%%oldN:*%prfx%=%%"
if /i not "%oldN%"=="%newN%" if /i "%oldN%"=="%prfx%%newN%" set "ToRename="
goto :eof
:skipProcedures
pushd "Folder"
for /d %%D in (*) do (
pushd "%%D"
for /r %%F in (*) do (
for %%P in ("%%F\..") do (
set "ToRename=Yes"
set "prfx=%%~nxP_"
set "oldN=%%~nxF"
call :testPrefix
if defined ToRename (
echo ren "%%F" "%%~nxP_%%~nxF"
) else (
echo prefixed already "%%F" "%%~nxF"
)
)
)
popd
)
popd
资源(必读,未完成):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (其他细节)Windows CMD Shell 命令行语法
- (
%~G
等%~1
专题页面)命令行参数(参数) - (
%variable:StrToFind=NewStr%
ETC。)变量编辑/替换