【问题标题】:windows shell, move multiple file arguments errorwindows shell,移动多个文件参数错误
【发布时间】:2009-07-03 04:04:38
【问题描述】:
f:\i>move foo bar dir
The syntax of the command is incorrect

帮助移动说:

MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination

这似乎暗示了多个论点。那么我怎样才能给出多个参数来移动呢?

【问题讨论】:

  • Stobors 下面的评论表明该语法已从 XP 及更高版本中删除。如果你仔细想想,MS 搞砸了:文件名中可以​​有逗号,所以如果你有三个文件,我用引号分隔:“file1”“file2”和“file1,file2”,那么“move file1”是什么意思? ,file2 someDir”是什么意思?问题是,语法应该是:“move [/Y | /-Y] filename1 [filename2 ...] destination”。是的,文件名可以有空格,但是你在命令行上用引号分隔你的文件名,一切都很好。重点是,每个文件名必须是单独的 avgv 条目才能移动。

标签: windows batch-file scripting


【解决方案1】:

从命令行:

for %i in (foo bar) do @move %i dir

或者,在 cmd 文件中(因为 % 变量的使用在此处略有不同):

for %%i in (foo bar) do @move %%i dir

【讨论】:

  • 克服您对编程语言的偏见。如果这是关于 C 文件移动函数的参数,那将是编程?两者都作为程序的一部分进入一个文件,这就是编程。
  • Ian,我没有语言偏见,我只是指出,如果您询问如何从命令提示符移动文件,那与编程无关,问题将被关闭。如果它是作为 cmd 脚本的一部分完成的,那么它就是编程。我的一些最好的代码是用 bash/cmd 编写的。
  • 好吧,你有控制台偏见。您可以在控制台上编程。与这个问题不同,bash 脚本中的所有有效内容在命令行中也有效。另外,ZSH 有很好的多行编辑能力,所以如果你想保存你的工作,没有理由不在控制台上写一个完整的程序作为一个函数,然后将它粘贴到一个文件中。 Powershell ISE 内置了一个控制台,该控制台还具有多行编辑功能。
  • 我不明白你是从哪里来的,@Ian,尤其是有两个月的时间间隔 :-) 我刚刚说过,与 Windows 命令相关的问题可能会被关闭. 不会关闭它们,因为你是对的——我的很多 shell 开发都是在命令行上进行的,然后剪切并粘贴到脚本中。即使是 Windows,尽管与 bash 不同,它往往一次只有一个命令。无论如何,您的问题仍然存在,可能因为您明确表示这是针对脚本的。我的信息是指出 % 和 %% 在运行方式上的区别。
  • 由于答案似乎让您感到困扰,我将删除您似乎关心的短语。无意冒犯或采取冒犯行为。我希望这会更好。
【解决方案2】:

如果你有权限下载东西,可以使用GNU coreutils

c:test> mv foo bar destination

【讨论】:

    【解决方案3】:

    要将多个文件作为第一个参数传递给移动命令,请用逗号分隔它们:

    move foo,bar dir
    

    这就是帮助中有逗号的原因:

    MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
    

    【讨论】:

    • 这给出了完全相同的消息,语法不正确。 mkdir foo bar dir,然后执行那个命令,你会看到。
    • 显然该语法在 xp 和更新版本中被删除了......它曾经在 win2k 及之前的版本中工作。我不知道为什么它仍然在文档中列出。 :-S
    • 如果在 XP 及更高版本中确实删除了多文件语法,最好的选择可能是使用我在答案中给出的命令创建一个 CMD 文件(适当调整以处理文件名(如果需要)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多