Batch file 如何用sp覆盖名称从nl_uu开始的文件_

Batch file 如何用sp覆盖名称从nl_uu开始的文件_,batch-file,rename,xcopy,Batch File,Rename,Xcopy,我有文件夹A和B。文件夹A有类似于:A.mp3和A.txt的文件,文件夹B有:B.mp3和B.txt。我想在这里做的是将文件夹A的内容复制并重命名为B,以便可以覆盖文件 下面是一个示例代码,说明如何在文件夹B中覆盖并保持相同的文件名: XCOPY /HECY A\a.txt B\b.txt 但我不想键入所有文件名来复制和覆盖文件夹B中的文件 任何帮助都将不胜感激。这应该行得通。它将所有A\nl.*文件复制到B\,将nl重命名为sp并覆盖文件 setlocal enabledelayedexpa

我有文件夹A和B。文件夹A有类似于:A.mp3和A.txt的文件,文件夹B有:B.mp3和B.txt。我想在这里做的是将文件夹A的内容复制并重命名为B,以便可以覆盖文件

下面是一个示例代码,说明如何在文件夹B中覆盖并保持相同的文件名:

XCOPY /HECY A\a.txt B\b.txt
但我不想键入所有文件名来复制和覆盖文件夹B中的文件


任何帮助都将不胜感激。

这应该行得通。它将所有
A\nl.*
文件复制到
B\
,将
nl
重命名为
sp
并覆盖文件

setlocal enabledelayedexpansion
for %%a in (A\nl_*.*) do (
set file=%%~nxa
set file=!file:~2!
xcopy /hecyi "%%a" "B\sp!file!"
)

重命名一个或多个文件/目录

重命名[drive:][path][directoryname1 | filename1][directoryname2 | filename2] REN[drive:][path][directoryname1 | filename1][directoryname2 | filename2]

范例

  • 将目录“sampel”重命名为“sample”
  • 重命名c:\sampel sample

  • 将所有文本文件重命名为扩展名为.bak的文件
  • 重命名*.txt*.bak

  • 使用特定前缀重命名特定文件夹中的所有文件(例如:1_NEW)
  • 重命名*1_新*

    4.将文件“normal sample.txt”重命名为“example sample.txt”。每当处理带有空格的文件或目录时,必须用引号括起来。否则您将得到“该命令的语法不正确”错误


    将“normal sample.txt”重命名为“example sample.txt”

    您可以直接使用
    xcopy/HECYI A\nl_*.*B\sp_*.
    命令:

    C:>dir A /b
    nl_t.txt
    nl_test.txt
    nl_test.xyz
    nl_testLarge.txt
    
    C:>dir B /b
    
    C:>xcopy A\nl_*.* B\sp_*.*
    A\nl_t.txt
    A\nl_test.txt
    A\nl_test.xyz
    A\nl_testLarge.txt
    4 File(s) copied
    
    C:>dir B /b
    sp_t.txt
    sp_test.txt
    sp_test.xyz
    sp_testLarge.txt
    

    所以你想用
    A\A.txt
    覆盖
    B\B.txt
    ,并保留相同的名称?是的,这就是我想说的。:)您必须在问题描述中包含重要信息,例如:“我想用sp_uu覆盖名称从nl_u开始的文件”,否则答案是不可压缩的!你是否建议我必须阅读其他答案中的所有评论才能理解你的问题?好主意。。。我建议你无论如何都要这样做,即使问题已经解决了(是的,你说得对。谢谢你的评论。:)谢谢,但是我怎样才能用sp_test.txt覆盖nl_test.txt呢?我试图将“%%a”“B\B%%~xa”替换为“%%sp_u”“B\nl_%%~xa”。我还可以使用sp_u作为值的变量吗?我会把你的答案标记为正确,但请先帮我解决这个问题。对不起,我只是把你的例子看得有点过火了。只需将
    “B\B%%~xa”
    替换为
    “B\%%~nxa”
    ,它就可以处理所有文件。嗨,巴厘岛,再次感谢你。但我想你还是没有抓住重点。多亏了你,我可以将文件复制到文件夹B,但我想用sp_uu覆盖名称从nl_u开始的文件。所以名称保持原样,但是文件的内容在从文件夹a复制到文件夹B后会发生变化。:)好的,所以所有nl_*文件都要复制到B,对吗?大概B有所有的sp_*文件,nl_u*文件应该重命名为sp_u并覆盖它们?哈哈:D不用担心。
    !档案:~2从变量中去掉前2个字符,在本例中,变量是文件名,我们希望从中删除nl部分,以便稍后我可以将sp放在它的位置。
    !文件位与
    %file%
    (现在nl已被删除)类似,但它使用延迟扩展,因为它位于for循环中。如果您使用常规的
    %
    ,变量将保持不变,直到循环完成。我确实已经理解了这一点,但感谢您的帮助。:)天哪,我的意思是,这花了我太多时间去理解批处理的逻辑。我刚开始,希望你能理解。:)