怎么做" dir> output.txt的"仅限所选文件

时间:2015-12-31 06:06:22

标签: batch-file

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

1 个答案:

答案 0 :(得分: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%"
)

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

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

然后就可以

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

将所选文件的路径的名称写入文本文件。

要获取无路径文件的名称,请将第6行更改为:

    echo %~nx1>>"%OutputFile%"

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

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

另请阅读Microsoft关于Using command redirection operators的文章。

注意:

length of a command line is limited因此无法选择数千个文件并将其文件名以完整路径发送到批处理文件。 Windows资源管理器只运行批处理文件,并在调用批处理文件时将每个文件名指定为参数。

顺便说一下:

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

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

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