【问题标题】:Windows server 2008 doesn't run .bat fileWindows Server 2008 不运行 .bat 文件
【发布时间】:2013-11-25 16:12:08
【问题描述】:

我对 windows server 2008 批处理文件中的某些命令有疑问。

当我尝试在命令提示符下使用clip 命令时,它可以工作。

但是当我在批处理文件中使用clip 命令并运行批处理文件时,clip 命令不起作用。在这个问题上我应该怎么做或者我的错在哪里?

编辑:

set wp=D:\workset\xxx\MC_DIM\exchange\

d:
cd %wp%

for %%i in (xxx_to_yyy*.zip) do (
  echo %wp%%%i | clip
)

当我尝试只使用 echo 时,我可以使用批处理文件的完整路径,当我从 cmd 使用 clip 命令时它也可以工作,但是当我创建一个批处理文件并尝试使用它时,它不会复制到剪贴板。应该是关于特权还是某事?

【问题讨论】:

  • 我的程序给出的答案是 5,但它应该是 4。我做错了什么?祝你好运回答,对吧?如果您不显示代码,则很难诊断您的问题。
  • 我同意 dbenham 的观点。如果您没有提供好的问题,我们无法为您提供好的答案。每次您提出问题时,您都会在页面中看到以下短语:您提出了一个模糊的问题,您得到的答案也很模糊。 将代码提供给我们,我们会为您解决。但截至目前,我们真的无法为您提供任何帮助。
  • @dbenham 好的,我很抱歉我的错误:/我编辑了我的问题,所以也许这更清楚以便更好地理解
  • @Epic_Tonic 请检查编辑,你是对的。
  • 好多了:-) 虽然最好也描述一下它不起作用的方式。但我想我知道。

标签: batch-file cmd windows-server-2008


【解决方案1】:

在我手中,您的代码可以正常工作,只是它只将列出的最后一个文件复制到剪贴板。这是因为列出的每个文件都有自己的管道到新的 CLIP 命令。每个 CLIP 命令都会覆盖前一个命令的结果。

您需要以某种方式列出文件的完整路径并将整个结果集通过管道传输到单个 CLIP 命令。不使用临时文件的最简单的解决方案是在 FOR 语句周围加上括号。管道的每一侧都在其自己的 CMD.EXE 进程中执行,ECHO 状态默认为打开。所以 DO 子句中的命令需要@ 来抑制命令的回显。

您的输出中无需包含%wp%~f FOR 变量修饰符将提供完整路径。

@echo off
set wp=D:\workset\xxx\MC_DIM\exchange\

d:
cd %wp%

(for %%i in (xxx_to_yyy*.zip) do @echo %%~fi) | clip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-18
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多