首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于生成多个命令行指令的批处理脚本

问用于生成多个命令行指令的批处理脚本
EN

Stack Overflow用户
提问于 2018-01-23 18:44:06
回答 3查看 93关注 0票数 0

我正在编写一个批处理文件Primary.bat,它收集特定目录中的所有文本文件名,并通过管道将输出传递给Generator.bat

Primary.bat当前的内容:

代码语言:javascript
复制
@echo off
SETLOCAL=ENABLEDELAYEDEXPANSION
Rem Following command will write the names of all files in a text file
dir /b "C:\InputOutput\SourceFiles" > "C:\InputOutput\Generator.bat"

因此,Generator.bat的内容将是:

代码语言:javascript
复制
input1.txt
input2.txt.
input3.txt
unitedstates1.txt
unitedkingdomsales.txt
majorregion100.txt

现在,我需要在Primary.bat中添加代码,以便在Generator.bat中创建上述所有行,并添加一些额外的文本,如下所示:

代码语言:javascript
复制
converter.java    C:\InputOutput\SourceFiles\input1.txt   C:\InputOutput\OutFiles\input1.rtg
converter.java    C:\InputOutput\SourceFiles\input2.txt     C:\InputOutput\OutFiles\input2.rtg
converter.java    C:\InputOutput\SourceFiles\input3.txt     C:\InputOutput\OutFiles\input3.rtg
converter.java    C:\InputOutput\SourceFiles\unitedstates1.txt   C:\InputOutput\OutFiles\unitedstates1.rtg
converter.java    C:\InputOutput\SourceFiles\unitedkingdomsales.txt   C:\InputOutput\OutFiles\unitedkingdomsales.rtg
converter.java    C:\InputOutput\SourceFiles\majorregion100.txt   C:\InputOutput\OutFiles\majorregion100.rtg

一旦运行了Primary.bat,您就可以双击Generator.bat,这将执行所有命令。

提前感谢

EN

回答 3

Stack Overflow用户

发布于 2018-01-23 19:43:13

注意!!这是假设按照您的示例,目录中的所有文件都具有.txt扩展名

代码语言:javascript
复制
@echo off
if exist "C:\InputOutput\Generator.bat" move /Y "C:\InputOutput\Generator.bat" "C:\InputOutput\Generator.back"
echo @echo off > "C:\InputOutput\Generator.bat"
setlocal enabledelayedexpansion
for /F %%a in ('dir /b C:\InputOutput\OutFiles\') do (
     set result=%%a
     set renamed=!result:.txt=.rtg!
     echo converter.java "C:\InputOutput\SourceFiles\!result!" "C:\InputOutput\OutFiles\!renamed!" >> "C:\InputOutput\Generator.bat"
)
endlocal
票数 0
EN

Stack Overflow用户

发布于 2018-01-23 20:08:54

关于你的代码,我仍然有一些不理解的地方,但就我对你的任务的理解而言,这应该是可行的:

代码语言:javascript
复制
@ECHO OFF
SETLOCAL EnableDelayedExpansion
TYPE NUL>Generator.bat
ECHO @ECHO OFF>>Generator.bat
FOR /F %%F IN ('DIR /B InputOutput\SourceFiles') DO (
    ECHO START converter.java "C:\InputOutput\SourceFiles\%%F" "C:\InputOutput\OutFiles\%%~nF.rtg">>Generator.bat
)

因为您只想执行converter.java,所以您也可以跳过START。我建议START能够决定您希望如何执行您的应用程序(例如。通过添加/b或/p或/w等作为START的参数)。

票数 0
EN

Stack Overflow用户

发布于 2018-01-23 21:31:57

下面的方法应该是可行的。因为converter.java是源文件,所以不能执行。因此,我假设您指的是java Converter,假设您已经编写了一个名为Converter的类,将其放在Converter.java中,并使用javac Converter.java对其进行编译以创建Converter.class。

代码语言:javascript
复制
@echo off
>C:\InputOutput\Generator.bat (for %%f in (C:\InputOutput\SourceFiles\*.txt) do (
    echo java Converter "%%f" "C:\InputOutput\OutFiles\%%~nf.rtg"
))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48399721

复制
相关文章

相似问题

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