我是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
答案 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\