我试图使一个艰巨的过程自动化,但我遇到了一堵墙,我似乎无法用谷歌搜索。
批处理文件包含:
cd %~dp0
"%~dp0raindrop.exe" -g om -i %1 -o "%~dp1
PAUSE我要做的是:从一个文件夹中流进一堆'.sm‘文件,然后一个一个地传递给bat文件,为从.bat进程创建的输出文件创建一个文件夹。
解释这些命令集的功能将是很棒的,因为我更希望创建一个更适合我的目的。这是批量转换和排序,因此需要理解假设在批处理文件中处理的输出目录。
发布于 2021-03-14 03:11:32
%1是“第一个参数”的窗口批处理。我希望这有点道理。
%0是“批处理文件本身”的窗口批处理。如果您现在知道%1的意思,这确实有点道理:它是‘第0参数’,第一个参数的左边是批处理文件本身。
%~letters0是一种告诉窗口的方法;我想要%0,但是,我希望您修改它。有很多字母。d的意思是“驱动器字母”,而p的意思是路径。
因此,
%~dp0是整个路径(包括驱动器号)到当前执行批处理文件的目录的windows-批处理-ese。
%~dp1是windows-批处理-ese,用于“获取param 1并将其转换为绝对路径,然后给出包含此参数的目录。
因此,您现在应该能够重新创建这个批处理脚本在纯java中所做的工作:
raindrop.exe,通过要求windows通过为该可执行文件提供完整的绝对路径来运行该文件,该路径位于批处理文件所在的位置。-g-om-i-oC:\example\whatever\foo.txt中的‘foo.txt’,最后一个arg是C:\example\whatever)。使用ProcessBuilder,您可以完全重新创建此功能。
注:您的批处理脚本可能坏了;它缺少一个结尾引号。而且,没有引用%1的事实意味着,其中包含空格的任何文件也会破坏这个批处理脚本。我假设您不需要在java中复制这些bug。
注:运行raindrop.exe与ProcessBuilder。忘了蝙蝠文件,你不会想要运行的。
https://stackoverflow.com/questions/66620421
复制相似问题