我想生成多个文件,类似于将其保存在某个特定位置的文件。 例如,文件名是“ MM_MTL_IM_20180726123109”,仅文件名的最后两位可以继续更改。 我们可以用批处理脚本来实现吗,还是可以建议我其他方法
答案 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
您只请求了“多个”文件,没有说明,因此,如果您不希望此脚本copy
次59
次copy
,则需要对代码进行调整,以便在同一目录中有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";
,则必须调整代码不正确。