3

我创建了一个批处理文件以将文件夹内容输出到名称列表中。

@echo off
cd /d %1
Title %~f1
dir %1 /b /l > %1\..\file_list.txt

如何使 file_list.txt 成为“目录名称”.txt?

例如,我在文件夹 ABC 中,我想输出目录列表,以便最终文本文件被命名为 ABC.txt 而不是 file_list.txt

编辑:感谢 Alconja,它完美地工作。由于这是一个信息和学习网站,您介意扩展您的答案以解释您添加的参数吗?

4

2 回答 2

2

根据此处的讨论,我认为这就是您所追求的:

@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof

给它一个快速测试&似乎做你想做的事

...按原样提供/无保证/等 :)

于 2009-04-03T05:16:04.450 回答
1

我认为没有一种简单的方法可以仅通过批处理脚本从当前路径中获取最后一部分。

但是,如果你在你的机器上安装了sed,它就变得相对容易了:

@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`"pwd | sed -e ""{s/.*\\//g}"""`) do dir %1 /b /l > %1\..\%%i.txt

更正:Alconja 的答案是正确的。显然,通过批处理脚本的扩展,这是可能的。(我现在也理解 ~f 了)。因此,您不再需要 sed,这可以简化为:

@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`pwd`) do dir %1 /b /l > %1\..\%%~ni.txt

可以说,由于您更改目录,因此您不需要输出路径中的 %1 或 dir 命令,并且您应该能够将 %1 替换为路径,因此您可以尝试(未经测试):

@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt
于 2009-04-03T04:56:07.807 回答