Переименуйте несколько файлов, используя BATCH, VBSCRIPT или BASH SHELL - PullRequest
1 голос
/ 27 сентября 2011

У меня есть несколько файлов в папке A, что мне нужно сделать, это переименовать имя файла в другой пример шаблона: TTFILE-201109265757.dat в YTL.MSZSH1.ch1.201109265757_0001.0001.dat

Где YTL, MSZSH1, ch1 является префиксом, затем следует имя файла, затем _, затем порядковый номер

Шаблон имени файла должен быть таким: YTL.MSZSH1.ch1.filename_SequenceNumber.SequenceNumber, где SequenceNumber - это 4 цифры, сбрасывается в 0 после 9999.

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

В среде 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 также будут переименованы, но порядковый номер не будет сброшен между двумя разными подпапками.

2 голосов
/ 27 сентября 2011

Этот маленький bash-скрипт должен работать :) Просто назовите его с файлами в списке аргументов или замените $@ на $(ls).

#!/bin/bash                                                                     
counter=1
prefix="YTL.MSZSH1.ch1."
for i in "$@" ; do
    file=$(basename "$i")
    counter=$(printf "%04d" $counter)
    mv "$i" "$prefix${file/TTFILE-/}_$counter.$counter.dat"
    counter=$(( $counter+1 ))
done
0 голосов
/ 12 сентября 2018

это путь в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...