2

假设我有文件名 text.txt 并包含几行。每行以 dayname 开头并以“/”字符结尾,然后添加路径。另一方面,我只需要每行的文件名而不是路径。因此,我需要一些东西来以这种方式转换文件:

mon/C:\stt\test_file.abc
sat/C:\Documents and Settings\alguri\Desktop\test_file2.txt
fri/C:\sat\new_folder2\file3.jpg

mon/test_file.abc
sat/test_file2.txt
fri/file3.jpg

我在 dos 命令中需要此代码。我尝试了一些代码,但无法以不同的方式解析字符串。因为路径名可以有多个“\”字符。

例如,如果我知道一行中只有两个“\”字符。我可以做类似的事情:

for /f "tokens=1,4 delims=/\" %%a in (text.txt) do (
echo %%a
    )

这只会为第 1 行给出正确答案,即“test_file.abc”但是所有其他行都有不同数量的“\”字符。你觉得我能怎么处理这个?

我想到的一种解决方案是计算“\”的数量并设置令牌第二个参数来决定我需要哪一部分。但我可以做到。此外,令牌值可能不会像我想的那样动态设置。

4

1 回答 1

3

您可以使用参数修饰符。

for /f "tokens=1,* delims=/" %%A in (test.txt) do (
    echo %%A/%%~nxB
)

有关修饰符的更多信息,您可以阅读%~dp0 是什么意思,它是如何工作的?

于 2012-07-11T13:42:30.717 回答