我正在尝试自学一些简单的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“
谢谢你的帮助!标记
发布于 2011-12-03 10:27:00
这是一个可以让你开始的命令:
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"这些命令的额外帮助
HELP FOR
HELP DIR它是如何工作的
FOR /F ... %variable IN ('command') DO otherCommand %variable...这使您可以执行command,并循环遍历其输出。每一行都将被填充到%variable中,并且可以在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。
发布于 2011-07-19 01:02:38
如果您事先知道所有的子目录,那么最简单的解决方案就是批处理文件tutorial on batch files
我不知道在ms dos中循环是如何工作的,但在linux中bash shell循环很容易编程。
无论如何,批处理文件都是最简单的选择
发布于 2011-07-19 01:42:15
如果您可以下载cygwin,那么您可以使用以下bash脚本来完成此工作,而无需对其进行硬编码
The code
附注:您需要将文件夹名称从tmp更改为LIB,并将文件名从LOL更改为ur文件名。脚本是不言而喻的。
Unix shell比MS-DOS更好,所以无论如何获取cygwin可能是个好主意
https://stackoverflow.com/questions/6736437
复制相似问题