Почему этот сценарий сошел с ума? - PullRequest
0 голосов
/ 08 апреля 2011

Ой человек!

Это VBScript, который должен был изменить все файлы в каталоге с именами, такими как

1229_002510 до 2010-12-29_002510

В конечном итоге сценарий никогда не завершается.

После одного прохода по именам файлов, он ПРОДОЛЖАЕТСЯ И ДОБАВЛЯЕТСЯ 2010- НЕСКОЛЬКО РАЗ, пока я не убил скрипт.

Ошибка появляется, только если вы запускаете скрипт через CScript в cmd .

(Запустить с: cscript "filename.vbs")

Так что теперь у меня есть папка с файлами вроде 2010-20-10-20-10-20-10-20-10-20-10-20-10-20-10-20-10-20-10-20-10-11-26_023335

Поймите, я нуб VBScript.

Сценарий работает в тестовом режиме (только печать имен файлов), но как только он работает с реальными файлами, он демонстрирует описанное поведение.

' shell script that changes dates like
' 1219_005530 to 2010-12-19_005530



' create a root filesystemobject:
Dim ofso
Set ofso = CreateObject( "Scripting.FileSystemObject" ) 

' create a folder object USING that root filesystem object
Dim folder

' that's the current directory
Set folder = ofso.GetFolder( "." )

' now, visit each file in the folder
Dim fileo
For Each fileo In folder.Files

  dim originalName
  originalName = CStr( fileo.Name )

  ' cut first 2 chars, prepend 2010-, re-add first 2 chars + "-"
  dim monthNumber
  monthNumber = Mid( originalName, 1, 2 )

  ' don't change the source file!
  If Right( originalName, 3 ) = "vbs" Then
    WSH.echo( "Not changing " & originalName )
  Else
    dim newName
    newName = "2010-" & monthNumber & "-" & Mid( originalName, 3 )

    WSH.echo( originalName )
    WSH.echo( newName & " < CHANGED TO" )


    ' ONLY ENABLE THIS LINE ONCE DEBUGGING COMPLETE  
    'fileo.Name = newName   
  End If

  Next

' PAUSE BEFORE EXIT  

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011

Вы можете выполнить эту задачу в 2 этапа.Сначала просканируйте каталог на наличие файлов и соберите их имена в массив, а затем запустите этот массив и переименуйте файлы.Это должно быть более надежным.

И рассмотрите возможность перехода на JScript.VBS просто безобразен по сравнению с ним.

0 голосов
/ 08 апреля 2011

Я не знаю, что вы делаете, но я скопировал / вставил ваш скрипт, и он работает так, как вы и планировали.(Windows 7)

Редактировать : попробуйте установить максимальное время, когда сценарий может пройти цикл.Это исправит это.Возможно, скрипт видит переименованные файлы как новые, создавая бесконечный цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...