批处理脚本生成多个命令行指令

时间:2018-01-23 10:44:06

标签: windows batch-file

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

目前Primary.bat的内容:

@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的内容将是:

input1.txt
input2.txt.
input3.txt
unitedstates1.txt
unitedkingdomsales.txt
majorregion100.txt

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

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即可执行所有命令。

提前致谢

3 个答案:

答案 0 :(得分:0)

注意!! 根据您的示例,假设目录中的所有文件都有.txt个扩展名

@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

答案 1 :(得分:0)

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

@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或其他任何内容作为{的参数{1}})。

答案 2 :(得分:0)

以下内容应该有效。由于converter.java是源文件,因此无法执行。因此,我假设您的意思是java Converter,假设您编写了一个名为Converter的类,将其放在Converter.java中,并使用javac Converter.java编译它以创建Converter.class

@echo off
>C:\InputOutput\Generator.bat (for %%f in (C:\InputOutput\SourceFiles\*.txt) do (
    echo java Converter "%%f" "C:\InputOutput\OutFiles\%%~nf.rtg"
))