【问题标题】:What's the meaning of these batch commands?这些批处理命令的含义是什么?
【发布时间】:2015-05-04 11:09:11
【问题描述】:

我只是想详细了解一下这条指令的含义:

"%0\\ \n cd %0\\.. \n cd /d %0\\.. \n mup.exe"

我搜索了它,但没有找到任何东西。 在我的程序中,调用了一个方法,该方法在“programmer TNM”安装路径中生成一个批处理文件:

createbatchFile(new File(batchFile));

方法的实现是:

private void createbatchFile(File file) throws IOException, Exception{

    if(file.exists())
      file.delete();
    File f = new File(file.getPath(),file.getName());
    f.deleteOnExit();

    char[] cmd = "%0\\ \n cd %0\\.. \n cd /d %0\\.. \n mup.exe".toCharArray();
    writeToFile(cmd , file);
    return;
 }

上面的代码做了一个

【问题讨论】:

    标签: windows batch-file command-line cmd


    【解决方案1】:

    首先,这不是批处理。嗯,这是一个批次。它是用其他语言编写的批处理;您可以知道,因为批处理不使用 \ 作为其转义字符,并且它不知道如何处理 \n 字符。这似乎是某种创建批处理文件的语言,但如果没有更多代码就很难分辨。

    %0 是脚本本身的命令行参数。
    \\ 会将文字 \ 写入输出文件
    \n 是换行符
    cd %0\\..
    em>将移动到当前目录的父目录...如果 %0 是有效的目录路径。但正如我之前所说,%0 是脚本本身,这就是说 cd script.bat\.. 不会做任何事情
    cd /d %0\\.. 是一样的,但使用 /d 选项,它允许 cd在驱动器之间移动,例如从 C: 到 D:。但同样,这实际上不会做任何事情,因为语法不正确。
    mup.exe 运行 mup.exe - 不确定这是什么,但它会运行

    【讨论】:

    • 我添加了一部分代码,不知道还有没有其他地方含糊不清。 @SomethingDark
    • @shakiba - 不,这和我想的完全一样;尝试通过另一个程序创建批处理脚本的不同语言。我原来的解释仍然成立。至于代码本身,如果您知道脚本从哪里运行并且您知道 mup.exe 在哪里,那么简单地调用 mup.exe 的完整路径(或至少调用 ..\..\mup.exe)可能是一个更好的主意cd 命令。
    • 真的很奇怪,因为和d盘没有关系!但是当我删除部分 cd /d %0\\.. 它不会运行 mup.exe @SomethingDark
    • 你知道 cd/d%0.. 在做什么吗?!我说过这个项目与驱动器 D 无关!
    • @shakiba - 我从来没有说过/d 需要在驱动器之间移动,只是它启用该选项。从 C: 移动到 D: 只是一个例子。就像我在回答中所说的那样,如果%0 是一个目录,cd /d %0\\.. 将从当前目录移动到其父目录。但是,由于%0 是一个文件,因此该命令什么也不做,因为script.bat\.. 是无效的语法。
    【解决方案2】:

    如果不使用SHIFT 命令,批处理文件中的%0 是脚本本身的名称。 就像你的例子一样 %0\\ 我想有一个以批处理命名的创建目录,这是一个传递给另一个命令的命令。

    %0\\..应该是上层目录。

    不分享更多你的代码就不能说更多了。

    【讨论】:

    • 我加了一部分代码,不知道是不是还模糊。
    • @shakiba - 这有效吗?正如我所看到的,它创建了一个批处理文件,但最后这个 %0\` will cal the batch with ` 可能会导致错误。相反,您需要删除 %0\\ \n 部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2012-06-25
    相关资源
    最近更新 更多