Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用批处理、VBSCRIPT或BASH SHELL重命名多个文件_Bash_Vbscript_Batch File - Fatal编程技术网

使用批处理、VBSCRIPT或BASH SHELL重命名多个文件

使用批处理、VBSCRIPT或BASH SHELL重命名多个文件,bash,vbscript,batch-file,Bash,Vbscript,Batch File,我在文件夹a中有许多文件,我需要做的是将文件名重命名为不同的模式示例:TTFILE-201109265757.dattoYTL.MSZSH1.ch1.201109265757_0001.0001.dat 其中,YTL、MSZSH1、ch1是前缀,然后是文件名,然后是序列号 文件名模式应该是这样的:YTL.MSZSH1.ch1.filename\u SequenceNumber.SequenceNumber其中SequenceNumber是4位数字,在9999之后重置为0。这个小bash脚本应该完

我在文件夹a中有许多文件,我需要做的是将文件名重命名为不同的模式示例:
TTFILE-201109265757.dat
to
YTL.MSZSH1.ch1.201109265757_0001.0001.dat

其中,YTL、MSZSH1、ch1是前缀,然后是文件名,然后是序列号


文件名模式应该是这样的:
YTL.MSZSH1.ch1.filename\u SequenceNumber.SequenceNumber
其中
SequenceNumber
是4位数字,在9999之后重置为0。

这个小bash脚本应该完成以下工作:)只需使用参数列表中有问题的文件调用它,或者将
$@
替换为
$(ls)

#/bin/bash
计数器=1
prefix=“YTL.MSZSH1.ch1。”
对于“$@”中的i;做
文件=$(基本名称“$i”)
计数器=$(printf“%04d”$计数器)
mv“$i”“$前缀${file/TTFILE-/}$counter.$counter.dat”
计数器=$($计数器+1))
完成

这个小bash脚本应该可以完成这项工作:)只需使用参数列表中有问题的文件调用它,或者将
$@
替换为
$(ls)

#/bin/bash
计数器=1
prefix=“YTL.MSZSH1.ch1。”
对于“$@”中的i;做
文件=$(基本名称“$i”)
计数器=$(printf“%04d”$计数器)
mv“$i”“$前缀${file/TTFILE-/}$counter.$counter.dat”
计数器=$($计数器+1))
完成

在Windows环境中,我将运行以下脚本:

@echo off
setlocal EnableDelayedExpansion
pushd %1

set c=0
for /r %%i in ( %2-*.dat ) do (
  set filename=%%~ni
  set digits=!filename:%2-=!
  ren "%%i" %3.%4.%5.!digits!_!c.!c!.dat
  set /a c+=1
  if !c! equ 10000 set c=0
)

popd
要运行它:
script.cmd“D:\Test Area”TTFILE YTL MSZSH1 ch1
,其中
D:\Test Area
是包含
.dat
文件的目录,以下参数是要使用的前缀


如果
D:\Test Area
包含子目录,则其中包含的
.dat
文件也将被重命名,但序列号不会在两个不同的子文件夹之间重置。

在Windows环境中,我将运行以下脚本:

@echo off
setlocal EnableDelayedExpansion
pushd %1

set c=0
for /r %%i in ( %2-*.dat ) do (
  set filename=%%~ni
  set digits=!filename:%2-=!
  ren "%%i" %3.%4.%5.!digits!_!c.!c!.dat
  set /a c+=1
  if !c! equ 10000 set c=0
)

popd
要运行它:
script.cmd“D:\Test Area”TTFILE YTL MSZSH1 ch1
,其中
D:\Test Area
是包含
.dat
文件的目录,以下参数是要使用的前缀


如果
D:\Test Area
包含子目录,则其中包含的
.dat
文件也将被重命名,但序列号不会在两个不同的子文件夹之间重置。

这是vbscript中的方式

    Dim objFSO,myFolder,objFolder,colFiles,objFile,newName,i,n
    set sh=createobject("wscript.shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    myFolder = "C:\users\eng\desktop\Scripts"    '' here you can write the path for your folder
    Set objFolder = objFSO.GetFolder(myFolder)
    Set colFiles = objFolder.Files

    i=0:n="0000"
    For Each objFile in colFiles
     if Not instr(1,objFile.name,"YTL.MSZSH1.ch1.",1) > 0 then  ''check if the file name change.this step to avoid change file name again after we rename

    newName=replace(objFile.Name,"TTFILE-","YTL.MSZSH1.ch1.")   ''replace "TTFILE-" with "YTL.MSZSH1.ch1." in the file name
    newName=replace(newName,right(newName,4),"_"&n&"."&n&".dat")   ''replace in modefiy newName ".dat" to "_0000.0000.dat" in the file name

    objFSO.getfile(objFile).name=newName    ''change the file name with newName
    sh.popup objfile,1,"In_The_Name_Of_Allah"

    i=i+1

       If i < 10 Then
            n= CStr("000" & i)
        ElseIf i < 100 Then
            n= CStr("00" & i)
        ElseIf i < 1000 Then
            n= CStr("0" & i)
        Else
            n= i
        End If
    End If
Next
wscript.quit
Dim objFSO,myFolder,objFolder,colFiles,objFile,newName,i,n
set sh=createobject(“wscript.shell”)
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
myFolder=“C:\users\eng\desktop\Scripts”“”您可以在此处为文件夹写入路径
设置objFolder=objFSO.GetFolder(myFolder)
设置colFiles=objFolder.Files
i=0:n=“0000”
对于colFiles中的每个objFile
如果instr(1,objFile.name,“YTL.MSZSH1.ch1.”,1)>0,则“检查文件名是否更改。此步骤可避免重命名后再次更改文件名
newName=replace(objFile.Name,“TTFILE-”,“YTL.MSZSH1.ch1.”)将文件名中的“TTFILE-”替换为“YTL.MSZSH1.ch1.”
newName=replace(newName,right(newName,4),“”&n&“&n&”&n&“.dat”)“在mode中替换文件名中的newName.dat”到“0000.0000.dat”
objFSO.getfile(objFile).name=newName''用newName更改文件名
sh.popup objfile,1,“以真主的名义”
i=i+1
如果我<10,那么
n=CStr(“000”和i)
如果我小于100那么
n=CStr(“00”和i)
如果我小于1000
n=CStr(“0”和i)
其他的
n=i
如果结束
如果结束
下一个
wscript.quit

这是vbscript中的方法

    Dim objFSO,myFolder,objFolder,colFiles,objFile,newName,i,n
    set sh=createobject("wscript.shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    myFolder = "C:\users\eng\desktop\Scripts"    '' here you can write the path for your folder
    Set objFolder = objFSO.GetFolder(myFolder)
    Set colFiles = objFolder.Files

    i=0:n="0000"
    For Each objFile in colFiles
     if Not instr(1,objFile.name,"YTL.MSZSH1.ch1.",1) > 0 then  ''check if the file name change.this step to avoid change file name again after we rename

    newName=replace(objFile.Name,"TTFILE-","YTL.MSZSH1.ch1.")   ''replace "TTFILE-" with "YTL.MSZSH1.ch1." in the file name
    newName=replace(newName,right(newName,4),"_"&n&"."&n&".dat")   ''replace in modefiy newName ".dat" to "_0000.0000.dat" in the file name

    objFSO.getfile(objFile).name=newName    ''change the file name with newName
    sh.popup objfile,1,"In_The_Name_Of_Allah"

    i=i+1

       If i < 10 Then
            n= CStr("000" & i)
        ElseIf i < 100 Then
            n= CStr("00" & i)
        ElseIf i < 1000 Then
            n= CStr("0" & i)
        Else
            n= i
        End If
    End If
Next
wscript.quit
Dim objFSO,myFolder,objFolder,colFiles,objFile,newName,i,n
set sh=createobject(“wscript.shell”)
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
myFolder=“C:\users\eng\desktop\Scripts”“”您可以在此处为文件夹写入路径
设置objFolder=objFSO.GetFolder(myFolder)
设置colFiles=objFolder.Files
i=0:n=“0000”
对于colFiles中的每个objFile
如果instr(1,objFile.name,“YTL.MSZSH1.ch1.”,1)>0,则“检查文件名是否更改。此步骤可避免重命名后再次更改文件名
newName=replace(objFile.Name,“TTFILE-”,“YTL.MSZSH1.ch1.”)将文件名中的“TTFILE-”替换为“YTL.MSZSH1.ch1.”
newName=replace(newName,right(newName,4),“”&n&“&n&”&n&“.dat”)“在mode中替换文件名中的newName.dat”到“0000.0000.dat”
objFSO.getfile(objFile).name=newName''用newName更改文件名
sh.popup objfile,1,“以真主的名义”
i=i+1
如果我<10,那么
n=CStr(“000”和i)
如果我小于100那么
n=CStr(“00”和i)
如果我小于1000
n=CStr(“0”和i)
其他的
n=i
如果结束
如果结束
下一个
wscript.quit

为什么
TTFILE-
不显示在新名称中?为什么
TTFILE-
不显示在新名称中?