【问题标题】:How to overwrite files with names starting from nl_ with sp_如何用 sp_ 覆盖名称以 nl_ 开头的文件
【发布时间】:2013-01-08 11:36:23
【问题描述】:

我有文件夹 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\a.txt覆盖B\b.txt,并保持同名?
  • 是的,这就是我想说的。 :)
  • 你必须在问题描述中包含重要信息,比如这个:“我想用sp_覆盖名称以nl_开头的文件”,否则答案是不可理解的!您是否建议我必须阅读其他答案中的 all cmets 才能理解您的问题?非常糟糕的主意...即使问题已经解决,我还是建议您这样做。 :(
  • 是的,你是对的。感谢您的评论。 :)

标签: batch-file rename xcopy


【解决方案1】:

这应该可行。它将所有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!"
)

【讨论】:

  • 谢谢,但是如何用 sp_test.txt 覆盖 nl_test.txt?我试图用“%%sp_”“B\nl_%%~xa”替换“%%a”“B\b%%~xa”。我还可以使用以 sp_ 作为值的变量吗?我会将您的答案标记为正确,但请先帮我解决这个问题。
  • 对不起,我只是把你的例子看得太字面了。只需将"B\b%%~xa" 替换为"B\%%~nxa",它应该适用于所有文件。
  • 嗨,巴厘岛,再次感谢您。但我认为你仍然没有明白这一点。感谢您,我可以将文件复制到文件夹 B,但我想用 sp_ 覆盖名称以 nl_ 开头的文件。所以名称保持不变,但是文件从文件夹 a 复制到文件夹 B 后,文件的内容会发生变化。
  • :) 好的,所以所有 nl_* 文件都将被复制到 B 中,对吗?大概B有所有sp_*文件,nl_应该重命名为sp_并覆盖它们?
  • 哈哈 :D 不用担心。 !file:~2! 从变量中删除前 2 个字符,在这种情况下,变量是文件名,我们要从中删除 nl 部分,所以我可以稍后将 sp 放在它的位置。 !file! 位就像 %file% (现在已取消 nl),但它使用延迟扩展,因为它位于 for 循环中。如果您使用常规的%,则变量在循环结束之前保持不变。
【解决方案2】:

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

重命名[驱动器:][路径][目录名1 |文件名1] [目录名2 |文件名2] REN [驱动器:][路径][目录名1 |文件名1] [目录名2 |文件名2]

例子

  1. 将目录“sample”重命名为“sample”

重命名 c:\sample 样本

  1. 将所有文本文件重命名为扩展名为 .bak 的文件。

重命名 *.txt *.bak

  1. 用特定前缀重命名特定文件夹中的所有文件(例如:1_NEW)

重命名 * 1_NEW*

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

重命名“普通示例.txt”“示例示例.txt”

【讨论】:

  • 我已经明白这一点,但感谢您的帮助。 :)
【解决方案3】:

您可以直接使用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

【讨论】:

  • 天啊,我的意思是,这花了我很多时间来理解批处理的逻辑。我刚开始,所以希望你能理解。 :)
猜你喜欢
  • 1970-01-01
  • 2016-03-17
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 2015-01-26
  • 2010-10-16
  • 1970-01-01
相关资源
最近更新 更多