【问题标题】:Drag and Drop multiple files onto batch将多个文件拖放到批处理中
【发布时间】:2017-03-20 01:43:20
【问题描述】:

请记住,我是新手。

我需要将 244 个扩展名为 .tex 的文件拖放到一个批处理中,然后创建一个可以编辑的 .png。简单地选择它们并把它们放进去是不行的,所以有人给我写了一个我不知道如何正确使用的代码:

for %%f in (*.tex) do c:\python27\python.exe tools/textool.py -x -v -ra %%f

.tex 文件都在批处理的同一目录中,即 C:\users\myname\downloads\folder1\folder2\folder3。希望你能帮忙。

【问题讨论】:

  • 不能直接删除父文件夹吗?
  • 不,不幸的是,这没有任何作用。
  • 拖放的问题是它会丢弃整个文件路径,然后遇到最大命令行长度为 8192 的问题。
  • @Squashman 是对的,这就是我建议删除父目录的原因;您可以通过for %%F in ("%~1\*.tex") do echo %%~I... 枚举所有包含的文件

标签: batch-file drag-and-drop


【解决方案1】:

试试这个批处理代码:

@echo off
if "%~1" == "" goto :EOF
for %%I in ("%~1\*.tex") do C:\python27\python.exe "%~dp0tools\textool.py" -x -v -ra "%%~fI"

如果在没有参数的情况下调用批处理文件,则不会执行任何操作。

但是,如果使用参数调用批处理文件,则不需要验证(可以添加)(第一个)参数指定一个文件夹路径,所有 *.tex 文件都应由 Python 脚本处理。

另一种解决方案:

@echo off
if "%~1" == "" goto :EOF
pushd "%~1"
if errorlevel 1 goto :EOF
for %%I in ("*.tex") do C:\python27\python.exe "%~dp0tools\textool.py" -x -v -ra "%%~nxI"
popd

指定为参数的目录成为此批处理文件的当前工作目录,Python 脚本仅获取文件名,文件扩展名通过命令行参数传递。

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

  • call /? ... 解释:
    • %~1 ... 第一个参数不带双引号
    • %~dp0 ... 参数 0 的驱动器和路径,它是包含以反斜杠结尾的批处理文件的文件夹的路径。
  • echo /?
  • for /?
  • goto /?
  • if /?
  • popd /?
  • pushd /?

注意:修改 Python 脚本以在命令行上指定的文件夹路径中搜索所有 *.tex 文件作为参数将每个找到的匹配模式的文件转换为参数会快得多一个 *.png 文件。

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2019-03-04
    • 2016-02-26
    • 2010-11-19
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多