创建 .BAT 文件以使用输入重命名当前目录中的文件
Create .BAT file to rename files in current directory with input
我正在尝试编写一个小的 .bat 脚本(编程知识有限),允许用户输入当前版本号(例如 01)和新版本号(例如 02)的值,然后使用这两个重命名命令中的数字。
echo off
cls
TITLE Version Updater
echo Use this script to update file names. This works similar to find and replace in other programs.
echo[
echo Enter the current version number (01 for example)
echo off
set /p current="Current Version: "
echo[
echo Enter the new version number (01 becomes 02 etc.)
echo off
set /p new="New Version: "
echo[
echo You will be updating all occurences of "%current%" in your file names to "%new%", if this is correct then continue, if not close this window.
pause
cd %CD%
rename *%current%* *%new%*
pause
我认为代码几乎是正确的,我只是在让它引用 运行 来自的当前目录时遇到了麻烦。我正在与计算机技能有限的人一起使用这个脚本,而且我不是网络管理员,所以我不能做任何太深入的事情。
如果有人可以帮我调整一下,那就太好了。
干杯,
垫子
编辑 1 - 评论回复
例如,test_01.tab 更改为 test_02.tab。它基本上会替换文件名的所有 _01 部分并将它们更改为 _02。在这种情况下,current = 01 和 new = 02。虽然文件名都不同,因此您可能需要更改 test_01.bat、testing_01.bat,所以只需将 01 重命名为 02 就是我假设的方式工作。
编辑 2 - 当前代码
这要感谢下面的 Stephan,我相信它唯一需要正确工作的是从 REN 命令的第二部分中删除文件路径,这样它就只有文件和扩展名,它应该可以工作。
@pushd %~dp0
@Echo off
CLS
setlocal enabledelayedexpansion
set /p current="Current Version: "
set /p new="New Version: "
for /R %%a in (*_%current%*) do (
set "Name=%%~a"
ren "%%~a" "!Name:_%current%=_%new%!"
)
pause
编辑 3 - 最终代码(有效,耶!)
@pushd %~dp0
@echo off
cls
TITLE CEF File Version Updater
echo This script will update CEF file versions for TLS rejections (E.G. 4XXX_XX_1 to 4XXX_XX_2). Backup files prior to running this script as a safety measure.
echo[
echo Enter the current version number (no underscore)
echo off
set /p current="Current Version: "
echo[
echo Enter the new version number (no underscore)
echo off
set /p new="New Version: "
echo[
echo You will be updating all occurences of "_%current%" in your file names to "_%new%", is this correct?
SET /P ANSWER=Do you want to continue (Y/N)?
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
goto :no
:yes
rename *_%current%.* *_%new%.*
CLS
echo Renaming is complete, please check the new file names are correct.
pause
exit /b 0
:no
exit /b 1
这应该可以解决问题。
@Echo off
set /p current="Current Version: "
set /p new="New Version: "
for /R "c:\your location" %%a in (*_%current%.*) do (
ren *_%current%.* *_%new%.*
)
pause
下面是 运行 前后几个 test-files 的脚本。
@Echo off
setlocal enabledelayedexpansion
set /p current="Current Version: "
set /p new="New Version: "
for /R %%a in (*_%current%.*) do (
set "Name=%%~nxa"
ECHO ren "%%~a" "!Name:_%current%=_%new%!"
)
pause
(删除ECHO
,如果输出满足你)
我正在尝试编写一个小的 .bat 脚本(编程知识有限),允许用户输入当前版本号(例如 01)和新版本号(例如 02)的值,然后使用这两个重命名命令中的数字。
echo off
cls
TITLE Version Updater
echo Use this script to update file names. This works similar to find and replace in other programs.
echo[
echo Enter the current version number (01 for example)
echo off
set /p current="Current Version: "
echo[
echo Enter the new version number (01 becomes 02 etc.)
echo off
set /p new="New Version: "
echo[
echo You will be updating all occurences of "%current%" in your file names to "%new%", if this is correct then continue, if not close this window.
pause
cd %CD%
rename *%current%* *%new%*
pause
我认为代码几乎是正确的,我只是在让它引用 运行 来自的当前目录时遇到了麻烦。我正在与计算机技能有限的人一起使用这个脚本,而且我不是网络管理员,所以我不能做任何太深入的事情。
如果有人可以帮我调整一下,那就太好了。
干杯,
垫子
编辑 1 - 评论回复 例如,test_01.tab 更改为 test_02.tab。它基本上会替换文件名的所有 _01 部分并将它们更改为 _02。在这种情况下,current = 01 和 new = 02。虽然文件名都不同,因此您可能需要更改 test_01.bat、testing_01.bat,所以只需将 01 重命名为 02 就是我假设的方式工作。
编辑 2 - 当前代码 这要感谢下面的 Stephan,我相信它唯一需要正确工作的是从 REN 命令的第二部分中删除文件路径,这样它就只有文件和扩展名,它应该可以工作。
@pushd %~dp0
@Echo off
CLS
setlocal enabledelayedexpansion
set /p current="Current Version: "
set /p new="New Version: "
for /R %%a in (*_%current%*) do (
set "Name=%%~a"
ren "%%~a" "!Name:_%current%=_%new%!"
)
pause
编辑 3 - 最终代码(有效,耶!)
@pushd %~dp0
@echo off
cls
TITLE CEF File Version Updater
echo This script will update CEF file versions for TLS rejections (E.G. 4XXX_XX_1 to 4XXX_XX_2). Backup files prior to running this script as a safety measure.
echo[
echo Enter the current version number (no underscore)
echo off
set /p current="Current Version: "
echo[
echo Enter the new version number (no underscore)
echo off
set /p new="New Version: "
echo[
echo You will be updating all occurences of "_%current%" in your file names to "_%new%", is this correct?
SET /P ANSWER=Do you want to continue (Y/N)?
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={yes} (goto :yes)
goto :no
:yes
rename *_%current%.* *_%new%.*
CLS
echo Renaming is complete, please check the new file names are correct.
pause
exit /b 0
:no
exit /b 1
这应该可以解决问题。
@Echo off
set /p current="Current Version: "
set /p new="New Version: "
for /R "c:\your location" %%a in (*_%current%.*) do (
ren *_%current%.* *_%new%.*
)
pause
下面是 运行 前后几个 test-files 的脚本。
@Echo off
setlocal enabledelayedexpansion
set /p current="Current Version: "
set /p new="New Version: "
for /R %%a in (*_%current%.*) do (
set "Name=%%~nxa"
ECHO ren "%%~a" "!Name:_%current%=_%new%!"
)
pause
(删除ECHO
,如果输出满足你)