我正在编写一个脚本来自动化新服务器上的备份设置。我不是批量大师,所以它保持相当简单(参见完整的参考文献http://pastebin.com/D1zEP8dj)。一切都适用于我尝试将另一个批处理脚本写入文件的位置:
(
echo del "%BACKUP_SERVER%Snapshot-%%COMPUTERNAME%%\Week_before\*.*" /S /Q
echo.
echo move /Y "%BACKUP_SERVER%Snapshot-%%COMPUTERNAME%%\Full\*.*" "%BACKUP_SERVER%Snapshot-%%COMPUTERNAME%%\Week_before"
echo move /Y C:\Scripts\Backup.log "%BACKUP_SERVER%Snapshot-%%COMPUTERNAME%%\Week_before"
echo move /Y C:\Scripts\Backupdiff.log "%BACKUP_SERVER%Snapshot-%%COMPUTERNAME%%\Week_before"
echo.
echo.
echo C:\Scripts\snapshot.exe C: "%BACKUP_SERVER%Snapshot-$computername\Full\$disk-Partition-$type.sna" --LogFile:C:\Scripts\Backup.log -L50000 -GX --usevss --AllWriters
echo @echo off
echo if %%errorlevel%% NEQ 0 (
echo echo Error while Backup at %%COMPUTERNAME%%.%%USERDOMAIN%% ^| C:\Scripts\blat\blat.exe -server %BLAT_MAILSERVER% -to info@abc.com -f backup@%BLAT_DOMAIN% -s "Error while Backup at %%COMPUTERNAME%%.%%USERDOMAIN%%" -attach C:\Scripts\Backup.log
echo )
) >full-backup.bat
if %DO_DIFF_BACKUP%==y (
(
echo C:\Scripts\snapshot.exe C: %BACKUP_SERVER%\Snapshot-$computername\Diff\$disk-Partition-$type-$weekday.sna -h%BACKUP_SERVER%\Snapshot-$computername\Full\c-Partition-ful.hsh --LogFile:C:\Scripts\Backupdiff.log -L50000 -GX --usevss --AllWriters
echo @echo off
echo if %%%errorlevel%%% NEQ 0 (
echo echo Error while Backup at %%COMPUTERNAME%%.%%USERDOMAIN%% ^| C:\Scripts\blat\blat.exe -server %BLAT_MAILSERVER% -to info@abc.com -f backup@%BLAT_DOMAIN% -s "Error while Backup at %%COMPUTERNAME%%.%%USERDOMAIN%%" -attach C:\Scripts\Backupdiff.log
echo )
) >diff-backup.bat
)
因此,在执行脚本时,它会在此摘录的最后一行停止。文件full-backup.bat完全不存在,但根本不会抛出错误,而文件diff-backup.bat是用以下内容编写的:
C:\Scripts\snapshot.exe C: c:\test\Snapshot-$computername\Diff\$disk-Partition-$type-$weekday.sna -hc:\test\Snapshot-$computername\Full\c-Partition-ful.hsh -- LogFile:C:\Scripts\Backupdiff.log -L50000 -GX --usevss --AllWriters
@echo off
if %0% NEQ 0 (
互联网说,为了逃避百分之一倍,他们逃脱管道^ | -them等等。但如果我引用东西,根本不使用逃生标志似乎没有改变任何东西 - 批次不会听我说: (。非常感谢任何帮助。
答案 0 :(得分:1)
如果您想要按字面{@ 1}}回显百分号,并使用%
转义所有其他特殊字符,那么它应该可以正常工作。
由于您无法知道您的变量是否也包含特殊字符,因此最好在此处使用延迟扩展而不是扩展百分比。 这适用于所有内容在通过延迟扩展进行扩展时是安全的
^