我试图通过一个批处理文件来处理几个文件。我希望批处理文件能够接受它给定的所有文件(也称为转储;或者拖放)并处理它们。
目前,我可以使用以下批处理命令单独处理这些文件:
"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”中的内容定义)
请不要在任何其他地方使用此代码,除非帮助我处理此代码(由于该代码用于的应用程序)。为了隐私起见,我在这个版本的代码中更改了几个标志。如果你有什么问题请告诉我!
发布于 2015-11-24 15:02:01
您可以使用这样的goto和shift进行循环(有关详细信息,请参阅rem注释):
: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发布于 2015-11-23 22:54:58
使用%*而不是%1。
示例:
@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。
https://stackoverflow.com/questions/33881845
复制相似问题