首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.bat文件上模拟“打开”

在.bat文件上模拟“打开”
EN

Stack Overflow用户
提问于 2021-03-14 02:05:52
回答 1查看 44关注 0票数 0

我试图使一个艰巨的过程自动化,但我遇到了一堵墙,我似乎无法用谷歌搜索。

这就是我想要自动化的过程

批处理文件包含:

代码语言:javascript
复制
cd %~dp0

"%~dp0raindrop.exe" -g om -i %1 -o "%~dp1
PAUSE

我要做的是:从一个文件夹中流进一堆'.sm‘文件,然后一个一个地传递给bat文件,为从.bat进程创建的输出文件创建一个文件夹。

解释这些命令集的功能将是很棒的,因为我更希望创建一个更适合我的目的。这是批量转换和排序,因此需要理解假设在批处理文件中处理的输出目录。

我现在所尝试的只是运行.bat

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-14 03:11:32

%1是“第一个参数”的窗口批处理。我希望这有点道理。

%0是“批处理文件本身”的窗口批处理。如果您现在知道%1的意思,这确实有点道理:它是‘第0参数’,第一个参数的左边是批处理文件本身。

%~letters0是一种告诉窗口的方法;我想要%0,但是,我希望您修改它。有很多字母。d的意思是“驱动器字母”,而p的意思是路径。

因此,

%~dp0是整个路径(包括驱动器号)到当前执行批处理文件的目录的windows-批处理-ese。

%~dp1是windows-批处理-ese,用于“获取param 1并将其转换为绝对路径,然后给出包含此参数的目录。

因此,您现在应该能够重新创建这个批处理脚本在纯java中所做的工作:

  1. 它运行文件raindrop.exe,通过要求windows通过为该可执行文件提供完整的绝对路径来运行该文件,该路径位于批处理文件所在的位置。
  2. 然后,它向它传递6个参数:
  • -g
  • -om
  • -i
  • 第一个参数
  • -o
  • 如果第一个参数解析为一个文件,那么该文件将变成一个绝对路径,然后该目录(即如果传递'foo.txt',即C:\example\whatever\foo.txt中的‘foo.txt’,最后一个arg是C:\example\whatever)。

使用ProcessBuilder,您可以完全重新创建此功能。

注:您的批处理脚本可能坏了;它缺少一个结尾引号。而且,没有引用%1的事实意味着,其中包含空格的任何文件也会破坏这个批处理脚本。我假设您不需要在java中复制这些bug。

注:运行raindrop.exe与ProcessBuilder。忘了蝙蝠文件,你不会想要运行的。

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

https://stackoverflow.com/questions/66620421

复制
相关文章

相似问题

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