Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从另一个批处理文件更新批处理文件_Batch File_Batch Processing - Fatal编程技术网

Batch file 从另一个批处理文件更新批处理文件

Batch file 从另一个批处理文件更新批处理文件,batch-file,batch-processing,Batch File,Batch Processing,亲爱的各位委员: 请帮我处理这个批处理文件。我想使用“SET/P INPUT=%=%”给出的答案,并让它永久更新另一个批处理文件 这是运行以从用户处获取答案的第一个批处理文件 @echo off cls echo. echo ................................................................. echo ..... Specify what the name of the Store is, this will send .....

亲爱的各位委员:

请帮我处理这个批处理文件。我想使用“SET/P INPUT=%=%”给出的答案,并让它永久更新另一个批处理文件

这是运行以从用户处获取答案的第一个批处理文件

@echo off
cls
echo.
echo .................................................................
echo ..... Specify what the name of the Store is, this will send .....
echo ............... alerts to abd@abc.co.za ..............
echo ................................................................. 
echo.
pause
:option
cls
color 5E
echo. 
echo "............   Press 1 to specify what the store name is......"
echo "............   Press 2 to exit the program   ................."
echo. 
SET /P M=Type from the menu above 1 or 2 then press ENTER:
IF %M%==1 GOTO SEND                                           
IF %M%==2 GOTO EOF  

:SEND
cls
color 0A
set INPUT=
set /P INPUT=Enter Store Name: %=%                            
if "%INPUT%"=="" goto input
echo "You said that the store name is: %INPUT%"

:: Have the user confirm his/her choice
SET /P ANSWER=Is the name correct (Y/N)?     
echo You chose: %ANSWER%                                      
if /i {%ANSWER%}=={y} (goto :yes)                             
if /i {%ANSWER%}=={yes} (goto :yes)                           
goto :no
:yes
echo You pressed YES!... The name is updating     
goto name
:no
echo You pressed NO!... The program will exit
pause
cls
goto eof
:name
::set /A store=%INPUT%
echo %INPUT% >> notify_support.bat
::Terminate the program
:EOF
如您所见,我正在努力指定“echo%INPUT%>>notify_support.bat”的位置。这是取自第二个批处理文件的代码

@echo off
call senditquiet -s smtp.gmail.com -port 587 -u rsupp0rt@gmail.com -protocol ssl -p access -f rsupp0rt@gmail.com -t 888@gmail.com -subject "Store ABC" -body "Hello there, There is an issue logged at the store.<br>Best regards." 
@echo关闭
致电senditquiet-smtp.gmail.com-port587-ursupp0rt@gmail.com-协议ssl-p访问-frsupp0rt@gmail.com-t888@gmail.com-主题“商店ABC”-正文“您好,商店记录了一个问题。
向您致意。”
当第一个批处理文件运行时,它会更新第二个批处理文件,但只是将其转储到文件末尾

我需要回显输入以替换第二批文件中的“存储ABC”

请协助,我对批处理文件有些生疏

echo %INPUT% >> notify_support.bat
该行包含
>
,表示“在文件末尾转储”。您可以使用单个
>
覆盖现有文件内容。这样,您就可以重新生成整个文件(反正只有两行)

另一种解决方案是实际解析现有文件并替换该文本。您可以使用
for/F…
,它允许您遍历文件的行。然后,您可以根据现有文件的(更改的)内容生成一个新文件。缺点是这种文件解析方法特别适用于数据文件,其中每一行的字段和分隔符格式相同(如CSV文件)。它不太适合解析“复杂”文件,如批处理文件或程序源文件

该行包含
>
,表示“在文件末尾转储”。您可以使用单个
>
覆盖现有文件内容。这样,您就可以重新生成整个文件(反正只有两行)


另一种解决方案是实际解析现有文件并替换该文本。您可以使用
for/F…
,它允许您遍历文件的行。然后,您可以根据现有文件的(更改的)内容生成一个新文件。缺点是这种文件解析方法特别适用于数据文件,其中每一行的字段和分隔符格式相同(如CSV文件)。它不太适合解析“复杂”文件,如批处理文件或程序源文件。

Hi@GolezTrol,我是否应该将第二批文件置空并让第一批文件解析它。就好像第一个文件正在使用>解决方案为我编写第二个文件一样?如果您选择实际解析批处理文件,则必须生成第二个文件,该文件随后将重命名,否则您将覆盖此时正在读取的文件。(顺便说一句,不确定这一点。当您运行
for/F
时,可能会立即读取该文件)无论如何,它更难实现,依赖于第二个文件的存在以及
存储ABC
标记的存在,这意味着您无法重复该过程。因此我建议根本不要解析它。你可以直接覆盖它。但为了做到这一点,第一批处理文件必须准确地知道第二批处理文件中的内容。这样做的好处是更容易实现,甚至可以在第一次生成第二个文件;它不一定存在。第一个文件需要包含第二个批处理文件的“模板”,这可能是一个缺点,但这取决于您是否可以接受。您好@GolezTrol,我使用了echo>并让它替换其中的所有内容。今天我读了更多关于for/F的书,它有一些局限性。如果有人举了一个例子,说明使用for/F是多么有趣,我会自己尝试,如果成功的话,我会在这里发布。感谢您提供的所有helpHi@GolezTrol,然后我是否应该将第二批文件设为空并让第一批文件对其进行解析。就好像第一个文件正在使用>解决方案为我编写第二个文件一样?如果您选择实际解析批处理文件,则必须生成第二个文件,该文件随后将重命名,否则您将覆盖此时正在读取的文件。(顺便说一句,不确定这一点。当您运行
for/F
时,可能会立即读取该文件)无论如何,它更难实现,依赖于第二个文件的存在以及
存储ABC
标记的存在,这意味着您无法重复该过程。因此我建议根本不要解析它。你可以直接覆盖它。但为了做到这一点,第一批处理文件必须准确地知道第二批处理文件中的内容。这样做的好处是更容易实现,甚至可以在第一次生成第二个文件;它不一定存在。第一个文件需要包含第二个批处理文件的“模板”,这可能是一个缺点,但这取决于您是否可以接受。您好@GolezTrol,我使用了echo>并让它替换其中的所有内容。今天我读了更多关于for/F的书,它有一些局限性。如果有人举了一个例子,说明使用for/F是多么有趣,我会自己尝试,如果成功的话,我会在这里发布。谢谢你的帮助