DOS命令将文件从父目录复制到多个子目录中的特定文件夹
我试图教自己一些简单的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
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。。你不会后悔的