如何获取文件字符串并从中删除数据?

时间:2014-03-18 05:35:41

标签: cmd

有点难以解释为什么我的Google-Fu让我失望,我基本上是在尝试编写一个脚本来扫描目录并将最新的备份集复制到另一个位置。备份的格式如下:

backup-001
backup-001-i001
backup-001-i002
backup-001-i003
backup-002
backup-002-i001
backup-002-i002
backup-002-i003

等。

其中backup-001是完整备份,backup-001-i001是第一个增量备份,依此类推,直到运行下一个完整备份(backup-002)。

我从该网站上的帖子中排序脚本的第一部分,该帖子将找到最新文件并将其复制:

pushd "\\nas\backup\bit-cw backup"
for /f "tokens=*" %%a in ('dir /b /od') do set newest=%%a
copy "%newest%" C:\test
popd

现在我需要找到一些方法让它找到最新的文件,例如backup-035-i003,然后将其匹配backup-035 *的所有文件复制到新位置,换句话说就是将复制最新的完整备份以及该备份的所有增量备份。

我想我需要以某种方式取得它确定的最新文件名,然后删除'-i00x'部分,然后在复制命令中使用新文件名后跟一个通配符,但我绝对丢失了! !

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

pushd "\\nas\backup\bit-cw backup"
for /f "tokens=2delims=-" %%a in ('dir /b /od') do set newest=%%a
copy "*-%newest%*" C:\test
popd

应该适合你。

答案 1 :(得分:0)

您已将最新文件的名称设置为环境变量%newest%。 可以使用:〜​​运算符获取可变内容的子字符串(来自最新文件名的前10个字符),请参阅 SET /?以获取帮助。

COPY "\\nas\backup\bit-cw backup\%newest:~0,10%*" "the new location"