将命令从一个批次附加到另一个批次

时间:2013-07-15 15:39:33

标签: batch-file copy set append backup

我正在尝试编写一个批处理文件,该文件将使用“MOVE”命令将新行写入第二个批处理文件。我们有一个带有MOVE命令的主批处理文件,用于使用我们软件的每台PC,因此我们可以将记录备份到网络驱动器(计划每天运行)。 20天后,本地PC上的数据将被删除,我们需要创建一个永久保存这些文件的位置。不幸的是,这是保持我们的数据备份的最佳方式,我只是尝试自动化流程,使我的部门尽可能轻松地完成流程。我正在尝试下面的命令,但我认为这是引号的问题。任何帮助将不胜感激,谢谢!

    :START 

    ECHO.
    SET /p pcid=Please enter the PCID that you would like to setup for Auto-Archiving:
        IF "%pcid%"=="%%" (GOTO CONFIRMPC)
        IF "%pcid%"=="exit" (GOTO END)

    :CONFIRMPC

    ECHO.
    ECHO Please verify that "%pcid%" is correct...
    ECHO.
    SET /p verify=Enter y/n...
        IF "%verify%"=="y" (GOTO SETUPAUTOARC)
        IF "%verify%"=="n" (GOTO START)
        IF "%verify%"=="%%" (GOTO VERIFYERROR)
        IF "%verify%"=="exit" (GOTO END)

    :VERIFYERROR

    ECHO.
    ECHO Please enter a valid (y/n) response...
    (GOTO CONFIRMPC)

    :SETUPAUTOARC

    ECHO.
    ECHO Creating directory...
    MKDIR "\\server32\e$\Backup Data\%pcid%"
    ECHO.
(HERE IS WHERE I'M RUNNING INTO TROUBLE)
    ECHO "MOVE "\\%pcid%\C$\Program Files\Application\Data\*.xml" > "\\server32\c$\scripts\masterbackup.bat
    ECHO.
    SET /p endresp=Finished! Would you like to run another PCID? (y/n)
        IF "%endresp%"=="y" (GOTO START)
        IF "%endresp%"=="n" (GOTO END)

    :END

    exit

1 个答案:

答案 0 :(得分:1)

ECHO "MOVE "\\%pcid%\C$\Program Files\Application\Data\*.xml" > "\\server32\c$\scripts\masterbackup.bat
---- ^ Remove this quote and add an extra waaaaay up at the very end...................................^.here

语法为ECHO string > file

引号应该是平衡的,需要放在任何包含空格的文件名(等)

另请注意,>会将数据写入 NEW 文件,删除退出(如果有)。使用>> APPEND 到现有文件。


话虽如此,所有命令都会放或添加一行

MOVE "\\%pcid%\C$\Program Files\Application\Data\*.xml"

到文件"\\server32\c$\scripts\masterbackup.bat"

这似乎并不特别合理。你不应该MOVE将文件集move到某个地方并将 {{1}}命令附加到批处理中吗?