首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建可以处理多个文件拖放的批处理文件

创建可以处理多个文件拖放的批处理文件
EN

Stack Overflow用户
提问于 2015-11-23 22:23:02
回答 2查看 9.1K关注 0票数 3

我试图通过一个批处理文件来处理几个文件。我希望批处理文件能够接受它给定的所有文件(也称为转储;或者拖放)并处理它们。

目前,我可以使用以下批处理命令单独处理这些文件:

代码语言:javascript
复制
"C:\Program Files\Wireshark\tshark.exe" -r %1 -Y "filter" -o "uat:user_dlts:\"User 8 (DLT=155)\",\"pxt\",\"0\",\"\",\"0\",\"\"" -o "gui.column.format:\"Info\",\"%%i\""> %1".filter.txt"

我想要做的事情和上面一样,但有能力简单地拖放文件到批处理文件。

对于那些对上面的批处理文件感到困惑的人:

-r读取输入文件,其完整文件地址(包括扩展名)由%1捕获

-Y过滤掉拖放文件的某些部分

-o设置运行可执行文件: tshark.exe的首选项(由“s”中的内容定义)

  • 将结果重定向到stdout
  • %1".filter.txt“将结果输出到一个名为"draggedfilename.filter.txt”的新文件

请不要在任何其他地方使用此代码,除非帮助我处理此代码(由于该代码用于的应用程序)。为了隐私起见,我在这个版本的代码中更改了几个标志。如果你有什么问题请告诉我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-24 15:02:01

您可以使用这样的gotoshift进行循环(有关详细信息,请参阅rem注释):

代码语言:javascript
复制
:LOOP
rem check first argument whether it is empty and quit loop in case;
rem `%1` is the argument as is; `%~1` removes surrounding quotes;
rem `"%~1"` therefore ensures that the argument is always enclosed within quotes:
if "%~1"=="" goto :END
rem the argument is passed over to the command to execute (`"%~1"`):
"C:\Program Files\Wireshark\tshark.exe" -r "%~1" -Y "filter" -o "uat:user_dlts:\"User 8 (DLT=155)\",\"pxt\",\"0\",\"\",\"0\",\"\"" -o "gui.column.format:\"Info\",\"%%i\""> "%~1.filter.txt"
rem `shift` makes the second argument (`%2`) to be the first (`%1`), the third (`%3`) to be the second (`%2`),...:
shift
rem go back to top:
goto :LOOP
:END
票数 5
EN

Stack Overflow用户

发布于 2015-11-23 22:54:58

使用%*而不是%1

示例:

代码语言:javascript
复制
@echo off 

for %%a in (%*) do  (
"C:\Program Files\Wireshark\tshark.exe" -r "%%a" -Y "filter" -o "uat:user_dlts:\"User 8 (DLT=155)\",\"pxt\",\"0\",\"\",\"0\",\"\"" -o "gui.column.format:\"Info\",\"%%i\""> "%%a"".filter.txt"
)

用正确的变量替换%%i

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33881845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档