【问题标题】:how to copy a file to child directory with same name (pic) within parent directories which are numbered (0001,0002,0003)如何将文件复制到编号为(0001,0002,0003)的父目录中具有相同名称(pic)的子目录
【发布时间】:2021-06-04 18:55:46
【问题描述】:

基本上我使用批处理脚本来组织具有相同名称的目录中的文件(文件:0001 -> 文件夹 0001)并在每个目录中创建子目录 -(/folder0001/pic),现在我正在尝试处理 jpg 文件每个目录(0001/pic、0002/pic)。我尝试使用 xcopy,但它不起作用。

这是我使用的批处理脚本。

@echo off
for %%i in (*) do (
 if not "%%~ni" == "organize" (
  md "%%~ni\keep_config\pic" && move "%%~i" "%%~ni\keep_config" "%%~d";
  
 )
)

还有这个我尝试用来复制的脚本。

xcopy /s C:\...\New folder\0001\keep_config\pic C:...\New folder\background_main L.jpg

【问题讨论】:

  • ... 在 WinNT 上没有意义。这是 Novell 操作系统的事情。
  • 它很难帮助你,因为你的问题没有澄清目录名称。你用了三个不同的! folder 0001folder00010001。也许你正在寻找这样的东西:@For %%G In (*.jpg) Do @If /I Not "%%G" == "%~nx0" "%SystemRoot\System32\Robocopy.exe" . "%%~nG\pic" "%%G" 1>NUL

标签: batch-file script


【解决方案1】:

你的问题很模糊:

  • 初始布局到底是什么,结果应该是什么?
  • 我们是将一个文件pic 复制到每个目录中,还是将不同的文件复制到与这些文件同名的目录中?
  • 或者每个编号的子文件夹是否有一个文件需要在同一个子文件夹中更深地复制?

因此,我将向您展示如何遍历目录,以便您可以自己复制文件

要在c:\TestFolder 的每个子文件夹上运行COMMAND,您可以这样写:

for /D %%I in ("c:\TestFolder\*") do COMMAND

这里:

  • for表示COMMAND会被执行多次

  • /D 指定循环遍历目录名,而不是文件名

  • %%I 是您可以在COMMAND 中使用的变量 - 它将依次替换为每个目录

  • in ("c:\TestFolder\*") 表示我们正在遍历文件夹 c:\TestFolder\ 内的每个子文件夹。

    • 如果您希望按名称过滤子文件夹,请将 * 更改为另一个通配符
  • 最后,将COMMAND 替换为将为每个子文件夹执行一次的命令,它可以有任意参数,包括:

    • %%~dpnxI 将替换为子文件夹的完整路径(不带双引号)
    • %%~nxI 将仅替换为子文件夹的名称(不带双引号)
    • 这里Ifor /D之后的变量名,d代表驱动器,p-路径,n-名称,x-扩展名(如果有的话-文件夹可以有扩展)
  • %%I in ("c:\TestFolder*") 执行命令

示例

假设我们要复制

  • 文件c:\src\first\pic\my.jpgc:\dst\first\pic\my.jpg
  • 文件c:\src\second\pic\my.jpgc:\dst\second\pic\my.jpg
  • ...等等...

假设所有文件夹都已经存在,执行该操作的命令可以是:

for /D %%I in ("c:\src\*") do copy /b /y "%%~dpnxI\pic\my.jpg" "c:\dst\%%~nxI\pic\my.jpg"

我们在这里:

  • 循环遍历c:\src 内的每个文件夹(即c:\src\firstc:\src\second,但不是c:\src\first\pic
    • 对于第一个文件夹%%~dpnxIc:\src\first
    • ...而%%~nxIfirst
  • 我们将SUBFOLDER_PATH\pic\my.jpg复制到c:\dst\SUBFOLDER_NAME\pic\my.jpg

参考

https://ss64.com/nt/for_d.htmlhttps://ss64.com/nt/for.html

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 2012-06-25
    • 2020-12-23
    • 1970-01-01
    • 2020-04-11
    • 2018-11-05
    • 2018-03-13
    • 2019-03-15
    • 1970-01-01
    相关资源
    最近更新 更多