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