如何仅对所选文件执行"dir> output.txt"

Wal*_*ers 1 batch-file

是否可以通过批处理文件在资源管理器中选择多个文件并将其名称(及其名称,不是文件夹中的每个文件)写入文本文件?谢谢.

Mof*_*ofi 5

是的,这是可能的.使用以下批处理代码:

@echo off
set "OutputFile=%USERPROFILE%\Desktop\FileNames.txt"
del "%OutputFile%" 2>nul
:NextFileName
if not "%~1" == "" (
    echo %~1>>"%OutputFile%"
    shift
    goto NextFileName
)
if exist "%OutputFile%" (
    %SystemRoot%\System32\sort.exe "%OutputFile%" /O "%OutputFile%"
)
Run Code Online (Sandbox Code Playgroud)

带有所选文件路径的文件名将写入FileNames.txt活动用户桌面上名称的文件,每次执行批处理文件时始终创建新文件.

创建此批处理文件后,在目录中创建此批处理文件的快捷方式,%USERPROFILE%\SentTo并在快捷方式的属性中指定以始终使用最小化控制台窗口运行批处理文件.

然后有可能

  • 在Windows资源管理器中选择文件
  • 右键单击其中一个选定的文件
  • 使用" 发送到"子菜单中的上下文菜单项(快捷方式名称)

带有路径的所选文件的名称写入文本文件.

要获得没有路径的文件的名称,请将第6行更改为:

    echo %~nx1>>"%OutputFile%"
Run Code Online (Sandbox Code Playgroud)

要了解使用的命令及其工作方式,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面.

  • call /?
    解释%~1- 没有双引号的第一个参数 - 和%~nx1- 只是没有双引号的第一个参数的名称和文件扩展名.
  • echo /?
  • goto /?
  • if /?
  • shift /?
  • sort /?

另请阅读Microsoft有关使用命令重定向运算符的文章.

注意:

命令行长度是有限的,因此无法选择数千个文件并将其文件名以完整路径发送到批处理文件.Windows资源管理器只运行批处理文件,并在调用批处理文件时将每个文件名指定为参数.

顺便说说:

我最喜欢的文件管理器Total Commander内置了命令:

  • cm_CopyNamesToClip
    如果没有选择任何内容而没有剪贴板路径,则复制所选文件/文件夹的文件/文件夹名称或光标下的文件/文件夹.
  • cm_CopyFullNamesToClip
    复制所选文件/文件夹的文件/文件夹名称或光标下的文件/文件夹,如果没有选择任何完整路径到剪贴板.
  • cm_CopyNetNamesToClip
    如果没有选择任何完整的UNC路径到剪贴板,则复制所选文件/文件夹的文件/文件夹名称或光标下的文件/文件夹.

我为TC的3个命令中的每个命令分配了一个热键,并将它们也添加到TC的工具栏中,以便通过键盘或鼠标点击随时快速执行.这是我15年多以前完成的,从那以后我从来没有为已经存在的文件手动输入文件名.在Total Commander中使用这3个命令时,文件/文件夹的数量没有限制.