Cmd 如何获取文件字符串并从其末尾删除数据?

Cmd 如何获取文件字符串并从其末尾删除数据?,cmd,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是第一个增量备份,依此类推,直到运行下一个完

要解释为什么我的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”部分,然后在copy命令中使用新文件名,后跟通配符,但我彻底迷路了


任何帮助都将不胜感激

您已经将最新文件的名称设置到环境变量%latest%中。 变量内容的子字符串(最新文件名的前10个字符)可以通过:~运算符获得,有关帮助,请参见设置/?

COPY "\\nas\backup\bit-cw backup\%newest:~0,10%*" "the new location"
应该对你有用

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