Batch file 批处理-在一条语句中为参数添加后缀
我知道我可以使用Batch file 批处理-在一条语句中为参数添加后缀,batch-file,cmd,Batch File,Cmd,我知道我可以使用%*引用所有文件输入 有没有办法用一个命令更改所有输入的后缀 我想这样做: util.bat: 运行CALL/?时命令CALL输出的帮助指定使用修饰符引用批处理文件参数的所有可能性 无法使用其他字符串修改操作直接修改参数列表,这些操作由环境变量的字符串值的命令SET支持,并通过在命令提示符窗口中运行SET/?时的SET输出来解释。为什么不能使用两行参数代码 Set AllARGs=%*
%*
引用所有文件输入
有没有办法用一个命令更改所有输入的后缀
我想这样做:
util.bat:
运行
CALL/?
时命令CALL输出的帮助指定使用修饰符引用批处理文件参数的所有可能性
无法使用其他字符串修改操作直接修改参数列表,这些操作由环境变量的字符串值的命令SET支持,并通过在命令提示符窗口中运行
SET/?
时的SET输出来解释。为什么不能使用两行参数代码
Set AllARGs=%*
Set AllArgsModified=%AllARGs:.txt
如果我理解正确,您需要的是一个脚本,该脚本使用参数中给定的新扩展名(后缀)重命名一组文件 对于此批处理,您可以这样做,但前提是所有文件的名称中都没有括号,并且后缀是first参数 代码如下: 重命名器.BAT参数1参数2参数3
- 参数1:新后缀
- param2、param3等:用空格分隔的文件名(可能需要引号)
@echo off
setlocal
rem Check the existence of the suffix
if "%~1"=="" (
echo Suffix is missing.
goto:EOF
) else (
set "suffix=%~1"
)
rem Removes the dot of the suffix
if "%suffix:~0,1%"=="." set "suffix=%suffix:~1%"
shift /1
:Loop
rem Check if there is still files to rename
if "%~1"=="" (
echo Task ended.
goto:EOF
) else (
set "fileName=%~n1"
)
rem Check the existence of the file
if exist "%~1" (
ren "%~1" "%fileName%.%suffix%"
) else (
echo File not found: "%~1"
)
shift /1
goto Loop
goto:EOF
虽然这个解决方案不像您写的那样是“一个命令”,但它可以保存为批处理文件,以便像执行一个命令一样执行
希望这能有所帮助。Mofi是对的。批处理参数列表也显示在/?的输出中。。这似乎是我需要的。我会测试它。字符串替换不能用命令行参数或变量进行。我同意你们的观点。我不是从直接修改%*的角度来考虑这个问题的。这实际上是一个大问题,特别是因为像%这样的字符串/字符喜欢消失,需要加倍。
@echo off
setlocal
rem Check the existence of the suffix
if "%~1"=="" (
echo Suffix is missing.
goto:EOF
) else (
set "suffix=%~1"
)
rem Removes the dot of the suffix
if "%suffix:~0,1%"=="." set "suffix=%suffix:~1%"
shift /1
:Loop
rem Check if there is still files to rename
if "%~1"=="" (
echo Task ended.
goto:EOF
) else (
set "fileName=%~n1"
)
rem Check the existence of the file
if exist "%~1" (
ren "%~1" "%fileName%.%suffix%"
) else (
echo File not found: "%~1"
)
shift /1
goto Loop
goto:EOF