Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使输出文件名等于文件夹名_Batch File_Dos_Command Prompt - Fatal编程技术网

Batch file 如何使输出文件名等于文件夹名

Batch file 如何使输出文件名等于文件夹名,batch-file,dos,command-prompt,Batch File,Dos,Command Prompt,我创建了一个批处理文件,将文件夹内容输出到名称列表中 @echo off cd /d %1 Title %~f1 dir %1 /b /l > %1\..\file_list.txt 如何将文件_list.txt设置为“dir name.txt” 例如,我在文件夹ABC,我想输出目录列表,这样最终的文本文件将命名为ABC.txt,而不是file_list.txt 编辑: 谢谢Alconja,它工作得很好。由于这是一个信息和学习网站,您是否介意扩展您的答案以解释您添加的参数 我认为没有一种

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

@echo off
cd /d %1
Title %~f1
dir %1 /b /l > %1\..\file_list.txt
如何将文件_list.txt设置为“dir name.txt”

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

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

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

但是,如果您在机器上安装了,则相对容易:

@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

更正:是正确的。显然,通过对批处理脚本的扩展,这是可能的。(我现在也明白了~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替换路径,因此您可以尝试(未测试):

根据讨论,我认为这就是你想要的:

@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof
给它一个快速的测试&似乎做了你想做的


…按原样提供/无保修/等等:)

它工作得非常好。我已经将它保存到“SendTo”上下文菜单中。酷,我不习惯这些扩展。
@echo off&setlocal enableextensions
Title %~f1
for %%* in (%1) do set MyDir=%%~n*
dir %1 /b /l > %1\..\"%MyDir%.txt"
endlocal&goto :eof