用于备份所有* .c和* .h文件的批处理脚本

时间:2009-12-31 20:00:21

标签: shell scripting batch-file dos

我是MS批处理编程的新手。

我想将具有匹配正则表达式的文件复制到具有相同目录结构的目标。如果我使用dir / b / s,我获得源的完整路径,那么如何从源路径获取相对路径?

我希望基于DOS的批处理脚本等同于bash脚本中的类似内容,

file_list=`find ./abc/test -name "*.c"`
for file_n in $file_list
do
    cp $file_n $targetdir/$file_n
done

6 个答案:

答案 0 :(得分:4)

一般来说,源代码控制比在源文件中进行备份更合适......

答案 1 :(得分:0)

我认为更简单的方法是简单地使用pushd/popd

pushd abs/test
file_list=`find . -name "*.[ch]"`
for file_n in $file_list
do
    cp $file_n $targetdir/$file_n
done
popd

答案 2 :(得分:0)

您可以将tar与管道一起使用来正确复制目录层次结构:

find . -name '*.[ch]' -exec tar cf - '{}' '+' | tar xf - -C $targetdir

答案 3 :(得分:0)

tar cvf backup-`date +%Y%m%d`.tar `find . -name "*.[ch]" -print`

将创建所需文件的日期tar文件。这可能更容易管理。

答案 4 :(得分:0)

批处理,

@echo off
for /F %%A in ('dir /b/s c:\test\*.c c:\test\*.h') do (
  echo copy "%%A" c:\destination
)

删除回显到实际副本

答案 5 :(得分:0)

robocopy命令可能会做你想要的,但你没有说你有什么版本的Windows(或者它是真的是DOS而不是CMD?)。

robocopy -s sourcedir destdir *.c *.h

xcopy可能适合您

xcopy /s *.c \destdir\
xcopy /s *.h \destdir\