Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file MSDOS上的文件夹和子文件夹副本_Batch File_Subdirectory_Xcopy_Robocopy_Directory Structure - Fatal编程技术网

Batch file MSDOS上的文件夹和子文件夹副本

Batch file MSDOS上的文件夹和子文件夹副本,batch-file,subdirectory,xcopy,robocopy,directory-structure,Batch File,Subdirectory,Xcopy,Robocopy,Directory Structure,我有一个文件夹,里面有9500个文档(如果folder1,我们就叫它)。我想复制这个文件夹的结构,但我想在新文件夹(我们称之为folder2)中,所有文档都是空白的。Folder1包含几种类型的文档。直到现在,我还拥有as代码: @echo off set "source=C:\Users\DM\Desktop\folder1\*.*" set "dest=C:\Users\DM\Desktop\folder2" xcopy "%source%" "%dest%" /t/e for /f "t

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

@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文件处停止

你能告诉我我应该补充什么吗?
提前感谢

我希望下面的代码能有所帮助。但它将新行回传到所有文件。我不能在中使用源作为参数!fileRelPath:C:\te mp\=

@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!"
)

正如马古所说,这很奇怪

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

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

当然看起来很奇怪。从理论上讲,应该不可能有
此用户有
希腊操作系统,也可能有
Unicode
文件名。也许有人可以给他提供代码页,让他在自己的地区使用。