假设存在目录结构C:\ users \ myuser \ Desktop \ bob \ marley。
在Windows中,从起始目录C:\ users \ myuser \ Desktop我可以执行“cd bo * \ mar *”并cd进入bob \ marley目录。但是,我不能做“复制bo * \ mar * C:\”
我需要在路径中使用带有通配符的copy,xcopy或某些标准windows命令将匹配目录复制到目标。我不确定这是否是复制和xcopy的限制,或者我是否有错误的语法。我也试过“xcopy / E / I bo * \ mar ** C:\ somedirectory”。
答案 0 :(得分:23)
不 - 你不能用COPY或XCOPY做到这一点。你所要求的是一个根本的缺陷。
如果您还有一个名为“boston \ marathon”的目录怎么办?您要从哪个目录中复制?
你可能会回答 - “我想要两个人”。但现在你有一个讨厌的潜在问题。如果两个源目录都包含名为“test.txt”的文件,该怎么办?您的目的地中只能有一个名为“test.txt”的文件。你保留哪一个?没有正确的答案,这就是为什么命令被设计为禁止你试图做的事情的一个很好的理由。
<强>附录强>
如果您愿意假设只有一个文件夹符合该模式,那么您已经知道了完成目标的所有步骤。
@echo off
cd bo*\ma*
xcopy * c:\somedirectory
如果您想返回到您开始的地方,请使用PUSHD / POPD代替CD
@echo off
pushd bo*\ma*
xcopy * c:\somedirectory
popd
但是,你应该非常小心。波士顿\马拉松可能存在,PUSHD和CD都不会表明存在潜在问题。
答案 1 :(得分:5)
使用XCOPY,不再可以在中使用通配符 目录的文件名,然后只有一组类似的 命名目录被复制到存档或网络结构。
(提示:如果你正在管理,你想要一直这样做 大量的数据。例如。视频或电影文件(许多文件 可能与生产有关。或者,价格历史数据 文件,各种格式或各种数据库文件 研究项目或实验工作。)
我相信我曾经能够用旧的XCOPY做到这一点,但是 升级(为了安全),文件名中的通配符,做 不正常工作(即你可以建立一个目录结构, 使用“/ t”选项,但你无法获得该死的文件 要迁移的目录!该死的很烦人。)
好吧,我们在农场,总是找到解决方案。即使 需要使用.44 magnum或Styer 50. :)
所以,这是我想出的:
假设您有一堆名为“Fark_1,Fark_2”的目录, Fark-Special,Fark_in_the_Park,Fark99 ......“等等。
如果所有这些“Fark ...”目录都存在于C:\盘上,并且 您要将此子结构的副本迁移到存档 网络上的磁盘(称之为“h:”)你可以 执行以下操作:
从Windows(MS-DOS)命令提示符运行FOR DO:
c:\> XCOPY fark* h: /s /e /f /t
The /s /e are for copying subdirs
and empty directories, the /f says to
show the files, and the /t says to only
copy the disk directories. No XCOPY
option seems to exist anymore to copy the
disk structure AND the files in the
directories.
要获取要复制的文件,请执行以下操作, 也来自Windows命令提示符:
FOR /d %a in (fark*) DO XCOPY "%a" h:%a\ /s /e /f /h /k /y
The /d says we are using directory names.
The %a is the variable name, substituted
into the command script for XCOPY. Make
sure to use whatever logical name or drive
letter you have for your archive structure.
(ie. don't use h: in the above command,
unless you have mapped h: to the place on
the network where you want to copy your
files to.) And note, the /y option means
overwrite any files already there.
是的,这是老式的unix / dos东西,但它有效,而且 你可以将它放入一个批处理作业。你可以避免成为 mouseboy完成工作。 (点,点击,咕噜,诅咒。 重复。使用GUI的规范过程,对吧?) 现在,有很多奇特的方法可以做到这一点。各种各样 像Robocopy,XXcopy等工具。但这就搞定了 完成,如果你有任何Windows副本,你可能 已经有了XCOPY和FOR-DO的东西。祝一切顺利。 哦,如果你将两个命令插入批处理作业,那么你 必须调整两级命令的语法 替代(我认为是正确的术语)。
批处理示例:
REM --- copy the "fark*" files to the archive disk h:
@echo off
REM --- create/update the structure
xcopy fark* h: /s /e /f /t
REM --- copy over the fark* dirs, and all associated subdirs
for /d %%a in (fark*) do xcopy "%%a" "h:%%a\" /s /e /f /h /k /y
答案 2 :(得分:4)
如果您要复制所有匹配目录的所有文件。你可能还会做这样的事......
for /d %%d in (bo*) do (
for /d %%e in (ma*) do (
copy %%d\%%e\* c:\temp
但请注意具有相同名称的文件出现在不同目录中的情况。
答案 3 :(得分:1)
这是我的批处理脚本,用于将一些文件夹备份到一个驱动器,一些文件夹使用上述帮助备份到另一个驱动器 - 适用于Win 7。
如果使用FOR循环,则无需复制文件夹结构,而/ S只会复制更改的内容
遗憾的是,你不能在这里使用正则表达式 - 或者有人有更整洁的解决方案吗?
FOR /d %%a in (2010* 2011* 2012* 201301* 2013020* 2013021* 20130222* 20130224*) DO (
XCOPY "%%a" "Z:\Backup\My Videos\%%a\" /D /S /Y | findstr /V "0 File"
)
FOR /d %%a in (20130225* 201303*) DO (
XCOPY "%%a" "X:\Backup\My Videos\%%a\" /D /S /Y | findstr /V "0 File"
)
答案 4 :(得分:0)
因此,如果您知道目录名称,我不确定您为何尝试使用通配符。我有一个问题,我们使用Mozilla Firefox,我们使用的许多网站都需要通用访问卡身份验证。默认情况下,Mozilla Firefox未配置为使用CAC Reader。因此,我使用CAC Reader配置了Firefox,然后从我的用户目录C:\ Users \%myname%\ AppData \ Roaming \ Mozilla \ Firefox \ Profiles \ ??????中获取了cert8.db和secmod.db文件。 ?.DEFAULT
问题是当我不知道谁登录到哪台计算机时,将这些文件复制到多台计算机和多个用户目录,并且???????默认文件夹被命名为每个用户不同的名称。
我创建了一个名为Computers.txt的文本文件并输入我从Active Directory检索到的计算机列表,然后编写了以下脚本来复制具有我复制到C:\ Temp的CAC设备的.db文件\安全
ColumnDataSource