批处理文件中ren命令中的未知参数


1

我是批处理文件编程的新手,我正在分析现有的批处理文件,该文件由我们公司的前开发人员实现。所以我想弄清楚他打算做什么。我有以下命令:

for /r %x in (\\Server6\doc_production\*38316468*) do ren "%x" /y \\Server6\doc_production\error\

我知道这是一个循环命令,应该递归通过给定的路径。但有些部分我不知道:

  1. 参数/ y是多少?我用谷歌搜索找不到任何东西。

  2. 这个命令究竟在做什么?

UPDATE : 谢谢回复。许多人说这个命令会将匹配模式的文件移动到错误子文件夹。所以我试着在我的本地机器上测试它。我创建了以下目录:

C:
├──test
│   └──error

我在测试文件夹中插入了一个38316468.sql文件。
然后我执行了命令:

for /r %x in (C:\doc_production\*38316468*) do ren "%x" /y C:\doc_production\error\

但没有任何反应。执行该命令时没有任何错误消息。没有语法错误。但它没有任何作用。它不会移动文件,也不会重命名文件。为什么会这样?


1
ren仅用于重命名文件。如果要移动,则需要使用move命令。
LPChip

@LPChip号我不想做任何事情。我只是想知道这个命令在做什么。这是由前一位开发人员编写的内容,我试图找出他打算用这个命令做什么。 / y参数要做什么?这个命令到底是做什么的?
Mo Prog

1
答案: /y 什么也不做,因为它不存在。您可能正在使用演进的DOS模拟器?
harrymc

命令 ren /? 通常会提供更多参数信息。
harrymc

Answers:


2

这对我来说看起来不合适。
RENAME(REN)没有/ y参数,并且要求第二个参数是文件名(不是像这里的文件夹)。
MOVE确实有“/ y”,意思是“不要打扰我”你确定“当目标已经存在时的问题并假设我回答”是“'并且文件夹作为第二个参数就可以了。
但是在MOVE的情况下,/ Y应该在MOVE命令之后和参数之前直接出现。如果用MOVE替换REN,则仍然是语法错误。

无论如何:FOR命令创建一个匹配模式的所有文件的列表(将通过子目录查看) 38316468 然后轮流调用每个匹配的REN。 REN(应该是MOVE)尝试将每个文件重命名(移动)到错误文件夹。
但是对于MOVE,使用/ Y仍然是错误的。

错误的另一个问题是FOR正在运行的源文件夹的子文件夹。这将导致命令尝试将文件移动到自身。 (例如,从错误文件夹到错误文件夹。)这可能是也可能不是问题,具体取决于错误文件夹是否在再次使用FOR命令之前被清除。

最后但同样重要的是:有些谨慎的话:
在批处理文件中使用%X变量需要将%加倍到%% X.在命令行上,您可以使用单个%。 %X变量区分大小写,因此%X和%x不是一回事。


我已经测试了您所解释的内容并将结果写入更新的问题中。我创建了一个简单的目录和一个包含文件名中模式的文件。但是命令没有做任何事情。
Mo Prog

1

让我们剖析它,这样你就可以了解它在做什么。

for /r %x 此命令从页面开始向下遍历文件夹树 \\Server6\doc_production\*38316468* path,并对每个匹配的文件执行DO语句。

在你的命令中, DO 或行动,是 ren 重命名。

/y 停止命令提示符,提示您覆盖目标中已存在的源文件。

看起来似乎是在第一个目录中查找通配符号并将其重命名并将其电影到/ error /文件夹,但实际上没有文件名可以使它工作。需要指定/ error /文件夹之后的文件名才能使此命令正常运行。


我尝试了你所写的内容并在/ error /之后插入了一个文件名,但它没有做任何事情。我已将命令更改为 for /r %x in (C:\test\*38316468*) do move "%x" /y C:\test\error\38316468.sql。我没有得到任何错误但也没有做任何事情。
Mo Prog

@MoProg如果你把它放在一个批处理文件中,你必须使用%%而不是%(尝试“for /?”寻求帮助)。而且你/ y在错误的地方。这本身就是语法错误。 Move /y "%%x" c:\test\error 不要指定目标文件名,因为如果您这样做,每个移动的文件都将覆盖以前的文件。如果仅指定文件夹名称,则会将每个文件写入保留其原始名称的该文件夹。
Tonny

@Tonny不幸的是这不正确。我尝试了所有组合。你写的组合也是: Move /y "%%x" c:\test\error 在批处理文件中,直接在Windows控制台中。他们都没有做任何事情。虽然没有显示错误,但它没有移动文件
Mo Prog
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.