如何使用批处理脚本生成与保存在一个特定位置的文件相似的多个文件

时间:2018-09-08 07:37:16

标签: file batch-file

我想生成多个文件,类似于将其保存在某个特定位置的文件。 例如,文件名是“ MM_MTL_IM_20180726123109”,仅文件名的最后两位可以继续更改。 我们可以用批处理脚本来实现吗,还是可以建议我其他方法

2 个答案:

答案 0 :(得分:0)

@echo off
setlocal
set "name=%~1"
set "stem=%name:~,-2%"
for /L %%i in (10,1,59) do copy %name% %stem%%%i

此批处理文件采用原始文件名作为参数,并创建它的49个副本,将“ 10”附加到“ 59”,而不是后2个字符。
以这种简单的形式,仅当原始文件和副本位于相同的当前目录中时,此方法才有效。

答案 1 :(得分:0)

这是一个基本的示例脚本,其设计目的不是为了提高效率或不是最佳方法,而是以逻辑顺序显示一些基本批处理文件命令及其语法。

@Echo Off
Set "FullFileName=MM_MTL_IM_20180726123109.ext"

If Not Exist "%FullFileName%" Exit /B

For %%A In ("%FullFileName%") Do (
    Set "FileNameOnly=%%~nA"
    Set "FileExtension=%%~xA"
)

Set "FileNameBarLastTwoChars=%FileNameOnly:~,-2%"
Set "LastTwoFileNameChars=%FileNameOnly:~-2%"

For /L %%A In (100,1,159) Do (
    Set "Seconds=%%A"
    If Not "%%A"=="1%LastTwoFileNameChars%" (
        Call Copy "%FullFileName%" "%FileNameBarLastTwoChars%%%Seconds:~-2%%%FileExtension%"
    )
)

Pause

您只请求了“多个”文件,没有说明,因此,如果您不希望此脚本copy59copy,则需要对代码进行调整,以便在同一目录中有60个名称不同的匹配文件,每个文件都有有效的秒数。
您的问题还指出“生成”不是copy,因此如果假设SELECT f1.userid FROM foo f1 LEFT JOIN foo f2 ON ( f1.userid = f2.userid AND f1.id < f2.id ) WHERE f2.id IS NULL AND f1.field_title != "website"; ,则必须调整代码不正确。