假设我有文件名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”提供正确答案 但是所有其他行都有不同数量的“\”字符。您认为我怎么能处理这个?
我脑海中的一个解决方案是计算“\”的数量,并设置令牌第二个参数来决定我需要哪个部分。但我能做到这一点。除了令牌,我可能没有动态设置值。
答案 0 :(得分:3)
您可以使用参数修饰符。
for /f "tokens=1,* delims=/" %%A in (test.txt) do (
echo %%A/%%~nxB
)
有关修饰符的更多信息,请阅读What does %~dp0 mean, and how does it work?