2013-04-23 59 views
0

我对这个东西有点不高兴。我正在尝试制作批处理脚本以将Backup Exec 10 xml日志文件转换为文本。for语句不会在批处理脚本中运行

当我搜索,编写脚本并试图运行它时,我从这里得到了一些很好的答案。它轰炸了第一个“for”声明,我不知道为什么。

我可以手动执行此脚本的每一步,它的工作效果很好。但是如果我双击批处理文件并运行它,在第二次暂停之后它会炸弹。

有人在这里看到任何不合适的地方吗?我在我的智慧结束。我认为“for”声明可能需要调整。我一直在搞乱,但还没有找到合适的组合,它可以在脚本中成功运行。

@echo off 
echo Starting Backup To Text SCript... 
pause 
cd c:\Program Files\Symantec\Backup Exec\Data 
echo Get the latest BEX_TAPEBACKUP File... 
pause 
FOR /F "usebackq" %f in (`dir /Od /B`) do set "FILE=%f" 
echo %FILE% will be converted to text 
pause 
cd c:\Program Files\Symantec\Backup Exec 
REM This command will take the current Backup Exec XML log file and convert it to text. 
pause 
bemcmd -o31 -l"C:\Users\Administrator\Desktop\Backup Logs\backuplog.txt" s0 -  f"C:\Program Files\Symantec\Backup Exec\Data\%FILE%" 
pause 
echo Done 

回答

1

使用正确的语法为您的for循环:

FOR /F "delims=" %%f in ('dir /od /B') do set "FILE=%%~f" 
+0

我会尝试这个.....我看到在另一个帖子居然...卫生署! – user2312406 2013-04-23 17:32:11

+0

工作。感谢您的信息和快速响应!有趣的是,我在这里读到这个。 http://ss64.com/nt/for_f.html我从这些论坛学到了很多! – user2312406 2013-04-23 17:34:15

+0

@ user2312406您将使用接受按钮接受Endoro答案。 – ElektroStudios 2013-04-23 23:33:33

1

您需要在为了加倍您%的。

FOR /F "usebackq" %%f in (`dir /Od /B`) do set "FILE=%%f" 
+0

这不起作用。 – Endoro 2013-04-23 17:38:13

+0

@Endoro - 论坛必须删除后面的引号。我从他的帖子中复制并粘贴。 – 2013-04-23 17:48:03

+0

这只适用于没有空格的短文件名:) – Endoro 2013-04-23 17:53:30