batch - 在一个语句中为参数添加后缀

时间:2017-12-11 15:53:38

标签: batch-file cmd

我知道我可以使用%*引用所有文件输入。

有没有办法用一个命令更改所有输入的后缀?

我想这样做:

util.bat:

my_command.exe %*:.txt

3 个答案:

答案 0 :(得分:4)

运行call /?时命令 CALL 输出的帮助指定了使用修饰符引用批处理文件参数的所有可能性。

无法使用命令 SET 支持的其他字符串修改操作直接修改参数列表,以获取环境变量的字符串值,并通过 SET 在命令提示符窗口中运行set /?时输出。

答案 1 :(得分:0)

如果我理解正确,你想要的是一个脚本,用参数中给出的新扩展名(后缀)重命名一堆文件。

使用此批处理可以执行此操作,但前提是这些文件的名称中没有括号,后缀是第一个参数。

以下是代码:

RENAMER.BAT param1 param2 param3 ...

  • param1 :新后缀
  • param2,param3等:用空格分隔的文件名(可能需要引号)

<强> CODE

@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

虽然这个解决方案不是&#34;一个命令&#34;正如您所写,它可以保存为批处理文件,只需执行一个命令即可执行。

希望这有帮助。

答案 2 :(得分:-2)

为什么你不能使用两行代码。

Set AllARGs=%*                                                                                                              
Set AllArgsModified=%AllARGs:.txt