【问题标题】:Why do my `for` commands run in `cmd` but not within a batch file?为什么我的 `for` 命令在 `cmd` 中运行,但不在批处理文件中?
【发布时间】:2016-01-12 13:17:51
【问题描述】:

我有以下cmd 命令,当我在批处理文件中运行这些命令时,它不会在命令提示符终止时执行。但是当我手动运行这些时,它会执行。

CD /d o:\database\UK
dir *LWRKF03* *NCOM* *DTP* *LLIQ01* *LCOG01* *LCIMS02* *LCLS01* *LOLYM* *LCHUB01* *ISD* *PUKODYS01* *PUKHSSS02* /s /t:c | findstr "%date%">C:\Users\43874210\Desktop\UK\FoundFiles.TXT
for /f "tokens=5 delims= " %i in ('"dir *LWRKF03* *NCOM* *DTP* *LLIQ01* *LCOG01* *LCIMS02* *LCLS01* /s /t:c | findstr "%date%""') do copy "%i" C:\Users\43874210\Desktop\UK
for /f "tokens=5 delims= " %i in ('"dir *LWRKF03* /s /t:c | findstr "%date%""') do copy "%i" X:
for /f "tokens=5 delims= " %i in ('"dir *NCOM* /s /t:c | findstr "%date%""') do copy "%i" W:
for /f "tokens=5 delims= " %i in ('"dir *DTP* /s /t:c | findstr "%date%""') do copy "%i" T:
for /f "tokens=5 delims= " %i in ('"dir *LLIQ01* *LCOG01* *PUKODYS01* *PUKHSSS02* /s /t:c | findstr "%date%""') do copy "%i" Q:
for /f "tokens=5 delims= " %i in ('"dir *LCIMS02* *LCLS01* /s /t:c | findstr "%date%""') do copy "%i" S:
for /f "tokens=5 delims= " %i in ('"dir *LOLYM* /s /t:c | findstr "%date%""') do copy "%i" R:
for /f "tokens=5 delims= " %i in ('"dir *LCHUB01* *ISD* /s /t:c | findstr "%date%""') do copy "%i" H:

【问题讨论】:

  • 在批处理文件中,您必须使用%%i 而不是%i(在for /? 中描述)
  • @Stephan 你应该把它变成答案。
  • @Christian.K 完成。必须先检查其他一些怪癖。
  • 你说命令提示符终止,所以我猜你是通过双击运行批处理文件;您应该打开一个新的命令提示符 (cmd) 窗口并通过在其中输入其路径(包含在 "" 中)来运行批处理文件,这样您就可以看到任何错误消息...

标签: windows batch-file for-loop cmd


【解决方案1】:

在批处理文件中,您必须使用 %%i 而不是 %i(在 for /? 中进行了描述)

示例行:

for /f "tokens=5 delims= " %%i in ('dir *LWRKF03* *NCOM* *DTP* *LLIQ01* *LCOG01* *LCIMS02* *LCLS01* /a-d /s /t:c ^| findstr "%date%"') do copy "%%i" C:\Users\43874210\Desktop\UK

(我还更正了in (....)的语法并添加了dir参数/a-d排除目录)

顺便说一句 - 对我来说是Tokens=4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多