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

Shell 用于备份所有*.c和*.h文件的批处理脚本,shell,scripting,batch-file,dos,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 我认为更简单的方法是简单地使用pushd/popd: 我认为更

我不熟悉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

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


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


一般来说,如果源文件…,则源代码管理比备份更合适。

一般来说,如果源文件…,则源代码管理比备份更合适。

您可以使用带管道的tar正确复制目录层次结构:

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

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

find . -name '*.[ch]' -exec tar cf - '{}' '+' | tar xf - -C $targetdir
将创建所需文件的带日期的tar文件。这可能更容易管理

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

使用批处理

@echo off
for /F %%A in ('dir /b/s c:\test\*.c c:\test\*.h') do (
  echo copy "%%A" c:\destination
)
批量删除回显到实际副本

@echo off
for /F %%A in ('dir /b/s c:\test\*.c c:\test\*.h') do (
  echo copy "%%A" c:\destination
)
删除回显到实际复制

robocopy命令可能会执行您想要的操作,但您没有说明您的Windows版本是什么,或者它实际上是DOS而不是CMD

robocopy -s sourcedir destdir *.c *.h
或者xcopy可能适合你

xcopy /s *.c \destdir\
xcopy /s *.h \destdir\
robocopy命令可能会执行您想要的操作,但是您没有说明您的Windows版本,或者它实际上是DOS而不是CMD

robocopy -s sourcedir destdir *.c *.h
或者xcopy可能适合你

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

我认为这个问题更适合超级用户。请在结束这个问题之前告诉我答案。这对我真的很有帮助。另外,我认为它的编程相关问题在这里被问到。如果它在移动时关闭,这里会有一个链接,您可以访问superuser.com,其他人可以在那里添加答案。我认为这个问题更适合superuser。请在关闭此问题之前让我知道答案。这对我真的很有帮助。此外,我还以为这里会问到与编程相关的问题。如果它在移动时关闭,这里会有一个链接,您可以访问superuser.com,其他人可以在这里添加答案。+1完全同意。假设存储库位于不同的驱动器上。+1完全同意。假设存储库位于不同的驱动器上。我希望基于DOS的批处理脚本与此等效。很抱歉不清楚。我想要与此等效的基于DOS的批处理脚本。抱歉说不清楚。@ghostdog74。。。它不会重新创建目录结构。这其实是我的问题。@ghostdog74。。。它不会重新创建目录结构。这实际上是我的问题。