如何使输出文件名等于文件夹名称
-
23-08-2019 - |
题
我创建了一个批处理文件,将文件夹内容输出到名称列表中。
@echo off
cd /d %1
Title %~f1
dir %1 /b /l > %1\..\file_list.txt
如何使file_list.txt为“ dir name” .txt?
例如,我在文件夹ABC,我想输出DIR列表,以便最终文本文件将被命名为ABC.TXT,而不是File_list.txt
编辑:感谢Alconja,它运作完美。由于这是一个信息和学习网站,您是否介意扩展答案以解释您添加的参数?
解决方案
基于讨论 这里, ,我认为这就是您所追求的:
@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof
给了一个快速的测试,似乎可以做你想要的
...按/不保证/等提供::)
其他提示
我认为没有一种简单的方法可以在批处理脚本中从当前路径中获得最后一部分。
但是,如果你有 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
可以说,由于您更改目录,因此您不需要输出路径或DIR命令中的%1,并且您应该可以替换为路径,因此您可以尝试(未经测试):
@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt
不隶属于 StackOverflow