如何使输出文件名等于文件夹名称

时间:2009-04-03 04:32:37

标签: batch-file dos command-prompt

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

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

如何将file_list.txt设为“dir name”.txt?

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

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

2 个答案:

答案 0 :(得分:2)

根据讨论here,我认为这就是你所追求的:

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

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

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

答案 1 :(得分: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's answer是正确的。显然,对于批处理脚本的扩展,这是可能的。 (我现在也理解了~f)。所以,你不再需要sed了,这简化为:

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

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

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