Batch file 如何在批处理脚本中模式匹配文件名 我的具体情况

Batch file 如何在批处理脚本中模式匹配文件名 我的具体情况,batch-file,pattern-matching,Batch File,Pattern Matching,我想根据文件名的第四个字符将文件复制到两个不同的位置。单色图像应转到黑白文件夹,彩色图像应转到彩色文件夹。文件名的第四个字符为C或B(颜色或黑/白) 例如,F0#CG.eps将是彩色图像文件,而F0#BG.eps将是单色图像文件 复制时,我还在文件名末尾添加用户名。以下是我目前掌握的情况: @echo off copy *.eps* \\Server\Directory1\BW\??????????%username%.* copy *.eps* \\Server\Directory1\COL\

我想根据文件名的第四个字符将文件复制到两个不同的位置。单色图像应转到黑白文件夹,彩色图像应转到彩色文件夹。文件名的第四个字符为C或B(颜色或黑/白)

例如,F0#CG.eps将是彩色图像文件,而F0#BG.eps将是单色图像文件

复制时,我还在文件名末尾添加用户名。以下是我目前掌握的情况:

@echo off
copy *.eps* \\Server\Directory1\BW\??????????%username%.*
copy *.eps* \\Server\Directory1\COL\??????????%username%.*
编辑

  • 我回滚了服务器的修改。批处理中的子字符串提取从零开始,因此
    !名字:~3,1确实获取第四个字符
  • 我在
    %%~Xa
    扩展替换中添加了缺少的百分比

编辑

  • 我回滚了服务器的修改。批处理中的子字符串提取从零开始,因此
    !名字:~3,1确实获取第四个字符
  • 我在
    %%~Xa
    扩展替换中添加了缺少的百分比

编辑

  • 我回滚了服务器的修改。批处理中的子字符串提取从零开始,因此
    !名字:~3,1确实获取第四个字符
  • 我在
    %%~Xa
    扩展替换中添加了缺少的百分比

编辑

  • 我回滚了服务器的修改。批处理中的子字符串提取从零开始,因此
    !名字:~3,1确实获取第四个字符
  • 我在
    %%~Xa
    扩展替换中添加了缺少的百分比


以下是@Aacini答案的修改版本,其中不包括“%~Xa替换错误”


以下是@Aacini答案的修改版本,其中不包括“%~Xa替换错误”


以下是@Aacini答案的修改版本,其中不包括“%~Xa替换错误”


以下是@Aacini答案的修改版本,其中不包括“%~Xa替换错误”


我相信您只需要对代码做一点小小的更改:

@echo off
copy ???B*.eps* "\\Server\Directory1\BW\??????????%username%.*"
copy ???C*.eps* "\\Server\Directory1\COL\??????????%username%.*"
您可能希望增加目标姓名中的问号数量。正如目前所写,它将只正确支持最多10个字符的名称,不包括扩展名


此外,名为
aaaB.part2.eps
的文件将作为
aaaB%username%.part2.eps
复制。如果您想要
aaaB.part2%username%.eps
,那么您将需要一个更像Aacini的解决方案。

我相信您只需要对代码做一点小小的更改:

@echo off
copy ???B*.eps* "\\Server\Directory1\BW\??????????%username%.*"
copy ???C*.eps* "\\Server\Directory1\COL\??????????%username%.*"
您可能希望增加目标姓名中的问号数量。正如目前所写,它将只正确支持最多10个字符的名称,不包括扩展名


此外,名为
aaaB.part2.eps
的文件将作为
aaaB%username%.part2.eps
复制。如果您想要
aaaB.part2%username%.eps
,那么您将需要一个更像Aacini的解决方案。

我相信您只需要对代码做一点小小的更改:

@echo off
copy ???B*.eps* "\\Server\Directory1\BW\??????????%username%.*"
copy ???C*.eps* "\\Server\Directory1\COL\??????????%username%.*"
您可能希望增加目标姓名中的问号数量。正如目前所写,它将只正确支持最多10个字符的名称,不包括扩展名


此外,名为
aaaB.part2.eps
的文件将作为
aaaB%username%.part2.eps
复制。如果您想要
aaaB.part2%username%.eps
,那么您将需要一个更像Aacini的解决方案。

我相信您只需要对代码做一点小小的更改:

@echo off
copy ???B*.eps* "\\Server\Directory1\BW\??????????%username%.*"
copy ???C*.eps* "\\Server\Directory1\COL\??????????%username%.*"
您可能希望增加目标姓名中的问号数量。正如目前所写,它将只正确支持最多10个字符的名称,不包括扩展名



此外,名为
aaaB.part2.eps
的文件将作为
aaaB%username%.part2.eps
复制。如果您想要
aaaB.part2%username%.eps
,那么您需要一个更像Aacini的解决方案。

问题是什么@我想根据文件名将文件复制到两个文件夹中。。我怎么写?请读。问题是什么@我想根据文件名将文件复制到两个文件夹中。。我怎么写?请读。问题是什么@我想根据文件名将文件复制到两个文件夹中。。我怎么写?请读。问题是什么@我想根据文件名将文件复制到两个文件夹中。。我怎么写?请阅读。@Aacini我使用了上面的脚本,它将所有文件直接复制到Color文件夹,而不管文件名中的第四个字符是B还是C。我猜在第行(“!name:~3,1!”eq“B”)中提到文件名的第四个字符时出现了一些错误。。。还有什么其他可能出错的地方吗?我测试了这个版本,效果很好。请记住它是区分大小写的。“bbbb.eps”将转到COL目录。Scott,我得到的所有文件名都是大写的,所以区分大小写应该不会有任何问题。但即使它不起作用,我也准确地复制了上面的代码并尝试了一下,但它根本没有执行。现在我尝试使用(%1)而不是(*.eps)仅复制所选文件,而不是复制所有eps扩展名,请让我进一步了解。。。thanksI添加了一些“调试”。再次运行它并告诉我们是否有任何输出。Scott,我尝试了你的调试版本,现在结果不同了。当我尝试黑白(B)文件时,它会直接复制到第一个目标BW文件夹,没有问题。但当我尝试用彩色文件复制时,它会给我类似“复制…”的错误。G:\Asura\color\colu IN \?????????????LOGESH.*系统找不到指定的文件。已复制0个文件。按任意键继续。。。然后就结束了。。。请告诉我哪里错了,非常感谢…@Aacini我使用了上面的脚本,它将所有文件直接复制到彩色文件夹,无论文件名中的第4个字符是否正确