我想在使用批处理文件的特定行之后插入一个在批处理文件中有命令(mkdir / copy)的行 . (mkdir / copy命令应该被视为一个单词而不是命令)
输入:
set MTBBankpath = C:\ InstallerOutput \ QuickBooks-Sync \ MTB copy / Y%QBprovisionpath%\ x86 \ Debug%ConnectorExecutionPath%\ x86 \ Debug
输出:
set MTBBankpath = C:\ InstallerOutput \ QuickBooks-Sync \ MTB copy / Y%ConnectorExecutionPath%\%outqbsyncpath%mkdir / Y%ConnectorExecutionPath%\%outqbsyncpath%copy / Y%QBprovisionpath%\ x86 \ Debug%ConnectorExecutionPath%\ x86 \调试
新行 copy /Y %ConnectorExecutionPath%%outqbsyncpath% - 具有复制命令, mkdir /Y %ConnectorExecutionPath%%outqbsyncpath% 具有mkdir命令,在特定行之后插入 set MTBBankpath=C:\InstallerOutput\QuickBooks-Sync\MTB
SETLOCAL ENABLEDELAYEDEXPANSION set inputFile =%userprofile%\ desktop \ testSO.bat set outputFile =%userprofile%\ desktop \ testSOout.bat set _strInsert = set IndbBankpath = C:\ InstallerOutput \ QuickBooks-Sync \ indb set _strFind = set MTBBankpath = C :\ InstallerOutput \ QuickBooks-Sync \ MTB set i = 0 FOR / F“usebackq tokens = 1 delims = []”%% A IN(FIND / N“%_strFind%”“%inputFile%”)DO(set _strNum = %% A)FOR / F“usebackq delims =”%% A IN(“%inputFile%”)DO(set / ai =!i!1 ECHO %% A >>“%outputFile%”IF [!i!] == [%_strNum%](ECHO%_strInsert%>>“%outputFile%”ECHO我想添加此行>>“%outputFile%”ECHO OOOO此LiNE TOO >>“%outputFile%”ECHO ZOMGBBQSAUCE添加此项行也是>>“%outputFile%”))
如果我改变,上面的代码不起作用
set _strInsert=copy /Y %ConnectorExecutionPath%%outqbsyncpath% 或
set _strInsert=mkdir %ConnectorExecutionPath%%outqbsyncpath%
请为此建议一个解决方案 .
2 回答
我相信你唯一的问题是're running into is the fact that you'没有封装
COPY
和MKDIR
命令的路径:set _strInsert=mkdir %ConnectorExecutionPath%\%outqbsyncpath%
尝试:
set _strInsert=mkdir "%ConnectorExecutionPath%\%outqbsyncpath%"
我也会在创建之前检查文件夹 .
编辑:
现在,如果您要添加许多不同的行,只需将它们添加到代码中即可 . 在上一篇文章中,您要求在代码中添加一行 . 如果您正在执行多行,只需将它们直接回显到输出文件中即可 .
以前的批处理文件有几个缺点:它删除空行,如果行包含引号可能会失败 .
EDIT :新版本已添加
如果输入文件很大,下面的批处理文件运行得更快;它还修复了一些细节,比如不删除空行 .
请注意,您必须将要插入的命令中的百分号加倍;否则插入的是变量的当前值,而不是变量的%name% .