0

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

@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%! 中修改 X!我实际上从文件夹中的所有文件中修剪了 X 个第一个字符。我不知道 ~%X%, 是什么 - 我只能看到如果它不是大于 0 的数字,则脚本将不会运行。我也不知道 set X=3 是什么 - 我只能看到它是否存在于 bat 文件中没有区别。谁能给我解释一下这个文件的语法?

提前致谢!

4

1 回答 1

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

我希望这有帮助。

于 2013-04-23T23:41:24.310 回答