使用bat文件删除多个文件名的第一个字符 - 什么是〜%X%,?

时间:2013-04-23 20:57:59

标签: syntax batch-file rename

我需要创建一个脚本,它将从大量文件(具有不同名称)中删除前六个字符。我从另一个问题尝试了这个例子,但我想更好地理解它:

@echo off
setlocal enabledelayedexpansion
set X=3
for %%f in (*) do if %%f neq %~nx0 (
    set "filename=%%~nf"
    set "filename=!filename:~%X%,-%X%!"
    ren "%%f" "!filename!%%~xf"
)
popd

我可以看到,修改X in - %X%!我实际上修剪了文件夹中所有文件的X个第一个字符。我不知道〜%X%是什么 - 我只能看到如果它不是一个高于0的数字,脚本就不会运行。我也不知道X = 3的集合是什么 - 我只能看到它是否存在于bat文件中没有区别。有人可以向我解释这个文件的语法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

该方法称为子串。

您可以在此处查看大量示例和说明:http://ss64.com/nt/syntax-substring.html

第一个数字是起始索引,第二个数字是。

的最后一个索引

示例:

@echo off
Set "Filename=TestFile.txt"
Set "Filename=%Filename:~0,-4%"
Echo %FILENAME%
pause

在该代码中,我们从索引“0”(字符串的第一个字母)开始读取,并在“-4”处停止读取,然后我们从0减去-4,结果是:“ TestFile

我希望这会有所帮助。