Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
DOS命令将文件从父目录复制到多个子目录中的特定文件夹_Dos - Fatal编程技术网

DOS命令将文件从父目录复制到多个子目录中的特定文件夹

DOS命令将文件从父目录复制到多个子目录中的特定文件夹,dos,Dos,我试图教自己一些简单的DOS命令,并使用相对简单的命令来复制或移动文件,但是这个特定的请求对我来说是一个挑战,希望能从这个论坛获得一些专业知识 C:\Parent\library.eds (location of my source file) 每当我更新父目录中的library.eds时,我都希望将该文件复制到包含名为“LIB”的文件夹的每个子目录中。我已将子目录标准化为以下内容: C:\Parent\Child1\INPUT C:\Parent\Child1\OUTPUT C:\Par

我试图教自己一些简单的DOS命令,并使用相对简单的命令来复制或移动文件,但是这个特定的请求对我来说是一个挑战,希望能从这个论坛获得一些专业知识

C:\Parent\library.eds   (location of my source file)
每当我更新父目录中的library.eds时,我都希望将该文件复制到包含名为“LIB”的文件夹的每个子目录中。我已将子目录标准化为以下内容:

C:\Parent\Child1\INPUT
C:\Parent\Child1\OUTPUT
C:\Parent\Child1\LIB      {paste library.eds here}

C:\Parent\Child2\INPUT
C:\Parent\Child2\OUTPUT
C:\Parent\Child2\LIB      {paste library.eds here}
并循环,直到所有具有LIB目录的子目录都包含更新的文件“library.eds”

谢谢你的帮助!
标记

如果您事先知道所有子目录,最简单的解决方案是批处理文件

我不知道循环在ms dos中是如何工作的,但在linux bash shell中,循环编程很简单


任何方式批处理文件都是最简单的选项

如果您事先知道所有子目录,最简单的解决方案就是批处理文件

我不知道循环在ms dos中是如何工作的,但在linux bash shell中,循环编程很简单


任何方式批处理文件都是最简单的选项

如果您可以下载cygwin,那么您可以使用下面的bash脚本来完成这项工作,而无需对其进行硬编码

另外,您需要将文件夹的名称从tmp更改为LIB,文件名从LOL更改为ur文件名。。这个脚本是非常不言自明的


Unix Shell比MS-DOS更好,因此无论如何获取cygwin可能是一个好主意

如果您可以下载cygwin,那么您可以使用下面的bash脚本来完成这项工作,而无需硬编码

另外,您需要将文件夹的名称从tmp更改为LIB,文件名从LOL更改为ur文件名。。这个脚本是非常不言自明的


Unix Shell比MS-DOS更好,因此无论如何获取cygwin可能是一个好主意

FOR /F "delims=" %%D IN ('DIR /b /a:D /s C:\Parent\LIB') DO @ECHO COPY "C:\Parent\library.eds" "%%~D"
一旦按您想要的方式工作,请删除
@ECHO
部分以实际执行复制:

FOR /F "delims=" %%D IN ('DIR /b /a:D /s C:\Parent\LIB') DO COPY "C:\Parent\library.eds" "%%~D"
这些命令的额外帮助 这是怎么回事 这允许您执行
命令
,并循环其输出。每一行都将被填充到
%变量中
,并且可以在
otherCommand
中任意扩展
%variable
在实际使用中只能有一个字母名称,例如
%V

"delims="
这使您可以忽略
'command'
输出的任何空格,因此它可以正确处理名称中包含空格的目录

DIR /b /a:D /s C:\Parent\LIB
这将搜索
C:\Parent
下名为
LIB
的所有文件。由于
/s
,它将递归地遍历子目录。它将只查找目录(因为
/a:D
)。由于
/b
,它将以对循环有用的方式输出它们

%%D instead of %D

这在批处理文件中是必需的。如果在命令提示符下执行此操作,您将使用%P来代替。

以下是一个可以让您开始的命令:

FOR /F "delims=" %%D IN ('DIR /b /a:D /s C:\Parent\LIB') DO @ECHO COPY "C:\Parent\library.eds" "%%~D"
一旦按您想要的方式工作,请删除
@ECHO
部分以实际执行复制:

FOR /F "delims=" %%D IN ('DIR /b /a:D /s C:\Parent\LIB') DO COPY "C:\Parent\library.eds" "%%~D"
这些命令的额外帮助 这是怎么回事 这允许您执行
命令
,并循环其输出。每一行都将被填充到
%变量中
,并且可以在
otherCommand
中任意扩展
%variable
在实际使用中只能有一个字母名称,例如
%V

"delims="
这使您可以忽略
'command'
输出的任何空格,因此它可以正确处理名称中包含空格的目录

DIR /b /a:D /s C:\Parent\LIB
这将搜索
C:\Parent
下名为
LIB
的所有文件。由于
/s
,它将递归地遍历子目录。它将只查找目录(因为
/a:D
)。由于
/b
,它将以对循环有用的方式输出它们

%%D instead of %D

这在批处理文件中是必需的。如果在命令提示符下执行此操作,则将使用%P。

哪个Dos?FreeDos、4Dos、MS-DOS等等。。。?或者您是否谈论了当前版本的cmd解释器,可在Win7或Vista中使用?哪个Dos?FreeDos、4Dos、MS-DOS等等。。。?或者您是否介绍了当前版本的cmd解释器,可在Win7或Vista中使用?谢谢。我试图避免维护所有目录的主列表,因为我们一直在添加/删除…我想我可以创建一个动态循环来搜索子目录中的LIB,并发布新文件。无论如何,我会给教程链接一个镜头了!谢谢你的帮助。我试图避免维护所有目录的主列表,因为我们一直在添加/删除…我想我可以创建一个动态循环来搜索子目录中的LIB,并发布新文件。无论如何,我会给教程链接一个镜头了!谢谢你的帮助。请用leann bash代替DOS。。你不会后悔这是Leann bash而不是DOS。。你不会后悔的