将文件拖放到批处理文件中?

问题描述 投票:0回答:2

我有一个看起来像这样的脚本:

@Echo off

cd C:\Users\Example\Subexample
for /r "C:\Users\Myname\Downloads" %%v in (*.txt) do idosomething -f "%%v"

pause

这首先告诉当前目录更改为 idosomething.exe 所在的子示例 并对下载文件夹中的所有文本文件进行递归操作。然后输出文件保存在同一位置,程序自动附加后缀“_new”。

现在,我怎样才能将一个或多个文本文件从任何目录拖放到批处理文件中并使其执行相同的操作?如果可能的话,批处理文件应该可以放在我喜欢的任何文件夹中。

谢谢!

windows batch-file cmd command-line
2个回答
0
投票

不确定我的问题是否正确,但这种方法将允许处理一个或多个拖到 .bat 文件中的文件名:

@echo off

cd /d C:\Temp

:loop
if exist "%1" (
  echo %1
  shift
  goto loop
)

cd
pause

0
投票

首先在目录

%USERPROFILE%
或您选择的任何其他目录中创建一个批处理文件,文件名如
ProcessTextFiles.cmd
或您选择的任何其他文件名,使用以下命令行:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
if not "%~1" == "" goto ProcessArgs

echo %~nx0 must be run with one or more folder paths
echo or with one or more text file names as argument(s).
echo(
pause
goto EndBatch

:ProcessArgs
set "ExeFileName=C:\Full Path\Executable.exe"
for %%I in (%*) do (
    if exist "%%~fI\" (
        echo Processing all .txt files in directory structure beginning from:
        echo "%%~fI"
        for /F "eol=| delims=" %%J in ('dir "%%~fI\*.txt" /A-D-L /B /S 2^>nul') do "%ExeFileName%" -f "%%J"
    ) else if /I "%%~xI" == ".txt" (
        if exist "%%~fI" (
            echo Processing file: "%%~fI"
            "%ExeFileName%" -f "%%~fI"
        ) else (
            echo Skippig not existing file: "%%~fI"
        )
    ) else echo Skipping argument: "%%~I"
)

:EndBatch
endlocal

这个批处理文件在运行它时执行一个简短的使用帮助,没有任何参数字符串,就像双击这个批处理文件一样。应扩展使用帮助以描述此批处理文件的用途以及使用方法。

下一步开始 Windows 文件资源管理器 并浏览到目录

%SystemRoot%\System32
(Windows 系统目录)并单击文件上的辅助(通常是右)指针设备(鼠标)按钮
cmd.exe
打开 Windows 命令的上下文菜单Processor 像上面那样处理批处理文件。

单击项目上的主要(通常是左)指点设备按钮在 Windows 11 上显示更多选项,然后在子菜单中的任何 Windows 上单击下一步发送到上下文菜单项桌面(创建快捷方式)。然后最小化 Windows 文件资源管理器 窗口以查看您的桌面,其中包含名称为

cmd.exe
cmd.exe - Shortcut
的新快捷方式文件,具体取决于 Windows 版本。

在新创建的快捷方式文件上单击辅助定位设备按钮,然后(在 Windows 11 上单击 显示更多选项 后)单击上下文菜单项 重命名 将快捷方式文件的名称更改为有意义的名称。快捷方式文件的名称稍后是上下文子菜单中上下文菜单项的名称发送到.

在新创建和已重命名的快捷方式文件上单击辅助指针设备按钮,然后单击上下文菜单项Properties打开快捷方式的Properties对话框窗口。

通过附加空格字符和/D /C "%USERPROFILE%\ProcessTextFiles.cmd"

修改属性
Target

还应该输入有意义的Comment。在使用按钮 OK 关闭对话窗口之前,可以选择一个稍后在上下文子菜单中显示的漂亮图标发送到,当然还有其他选项卡上的所有其他属性,以保存所有更改的属性并关闭窗口.

使用 Ctrl+X 剪切修改后的快捷方式文件,恢复 Windows 文件资源管理器 窗口,浏览到目录

%APPDATA%\Microsoft\Windows\SendTo
并使用 Ctrl+V 粘贴快捷方式文件。

可以在 Windows 文件资源管理器(或任何其他具有 Explorer 上下文菜单支持的文件管理器)中选择一个或多个目录和/或

.txt
文件,然后再使用辅助指针设备按钮打开上下文菜单和(在单击在 显示更多选项 在 Windows 11 上)单击带有快捷方式文件名称的上下文菜单项上的子菜单 发送到。然后
explorer.exe
(或任何其他文件管理器可执行文件)启动Windows命令处理器来处理指定的批处理文件,文件管理器中选择的目录和文件的所有名称附加为
cmd.exe
传递给批处理文件的附加参数。

请注意,存在命令行长度限制,这意味着无法选择数千个

.txt
文件并通过一次批处理文件处理所有文件。

批处理文件还支持具有相对路径的文件/文件夹参数,以便从命令提示符窗口中手动执行或从具有一个或多个文件/文件夹名称的另一个批处理文件调用它。

要了解使用的命令及其工作原理,请打开 命令提示符 窗口,在那里执行以下命令,并仔细阅读每个命令显示的帮助页面。

  • call /?
    ...解释
    %~nx0
    %*
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • pause /?
  • set /?
  • setlocal /?
© www.soinside.com 2019 - 2024. All rights reserved.