【问题标题】:Folder and subfolder copy at MSDOSMSDOS 中的文件夹和子文件夹复制
【发布时间】:2013-12-23 15:12:13
【问题描述】:

我有一个文件夹,里面有 9500 个文档(如果是文件夹 1,我们就叫它)。我想用它的结构制作这个文件夹的副本,但我想在新文件夹(我们称之为文件夹 2)中的所有文档都是空白的。 Folder1 包含几种类型的文档。直到现在我有代码:

@echo off
set "source=C:\Users\DM\Desktop\folder1\*.*"
set "dest=C:\Users\DM\Desktop\folder2"

xcopy "%source%" "%dest%" /t/e
for /f "tokens=2 delims=>" %%a in ('xcopy "%source%" "%dest%" /s/h/e/k/f/c/l') do (
for /f "tokens=*" %%b in ("%%a") do type nul >"%%b"
)
pause

bat 没问题,但过了一会儿,cmd 上出现了 3 个不同的错误,并且在那里堆积(我的窗口是希腊语,所以我正在尝试翻译错误)。一个是“内存不够”,下一个是“系统找不到指定的磁盘(或驱动器)路径”(我认为它是两个驱动器/磁盘之一。)最后一个是“文件名语法” 、目录或卷标不正确”。它停在标题上有“”字符的特定 htm 文件处。

你能告诉我我应该添加什么吗? 提前致谢

【问题讨论】:

  • 当然看起来很奇怪。理论上,文件名中不可能有></k 是多余的,因为使用了 /L 开关,/e 暗示 /s 所以 /s 也是多余的 - 但这些都是装饰性的。我也更喜欢copy nul "%%b" >nul 但同样,这将是个人喜好。您能否在for...%%b 之前ECHO(+%%a+ 并使用有问题的文件名系列的部分目录列表报告结果?内存不足和无法定位的消息是从哪里弹出来的——天知道。你确定dest 不是source 的子目录吗?
  • 这个用户有一个Greek 操作系统,也可能有Unicode 文件名。也许有人可以为他提供用于他所在地区的代码页。

标签: batch-file subdirectory xcopy robocopy directory-structure


【解决方案1】:

我希望下面的代码会有所帮助。但它会将新行回显到所有文件。而且我不能在 !fileRelPath:C:\te mp\=!

中使用 source 作为参数
@echo off
setlocal enabledelayedexpansion

set source=C:\te mp\
set dest=C:\te mp2\

if not exist "%dest%" mkdir "%dest%"

xcopy "%source%*" "%dest%" /t /e

for /F "tokens=*" %%a in ('dir /B /S /A-D "%source%"') do (
    set fileRelPath=%%a
    set fileRelPath=!fileRelPath:C:\te mp\=!

    echo.>"%dest%!fileRelPath!"
)

【讨论】:

    【解决方案2】:

    正如 Magoo 所说,这很奇怪。

    无论如何,在找到失败的地方时,您可以这样做

    robocopy "%source%" "%dest%" * /e /create
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多