2016-10-01 4 views
0

フォルダパスを持つ設定ファイルにアクセスできるVBScriptを作成します。フォルダに移動すると、_DDMMYYYYという書類があります。 _と日付スタンプを削除したいと思います。フォルダパスを読み取ってファイルにアクセスしてファイルにアクセスして名前を変更します

誰かが私を助けてくれますか?

Option Explicit 

Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject") 

'Declare the variables to be used from the property file 
Dim Folder 
Dim objWMIService, objProcess, colProcess, obNetwork 
Dim strComputer, WshShell, strComputerName 

strComputer = "." 

Set obNetwork = WScript.CreateObject("Wscript.Network") 
strComputerName = obNetwork.ComputerName 
Set obNetwork = Nothing 

SetConfigFromFile("C:\Users\Lenovo\Desktop\RenameFile\ConfigPad.txt") 
MsgBox "Folder = " & Folder 

Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run Folder 

'---------- Get Variables from ConfigPad.txt ---------- 
Sub SetConfigFromFile(fileName) 
    Dim strConfigLine 
    Dim fConFile 
    Dim EqualSignPosition 
    Dim strLen 
    Dim VariableName 
    Dim VariableValue 

    Set fConFile = fso.OpenTextFile(fileName) 
    While Not fConFile.AtEndOfStream 
    strConfigLine = fConFile.ReadLine 
    strConfigLine = Trim(strConfigLine) 
    'MsgBox(strConfigLine) 
    If (InStr(1,strConfigLine,"#",1) <> 1 And Len(strConfigLine) <> 0) Then 
     EqualSignPosition = InStr(1, strConfigLine, "=", 1) 
     strLen = Len(strConfigLine) 
     VariableName = LCase(Trim(MID(strConfigLine, 1, EqualSignPosition-1))) 'line 34 
     VariableValue = Trim(Mid(strConfigLine, EqualSignPosition + 1, strLen - EqualSignPosition)) 
     Select Case VariableName 
     'ADD EACH OCCURRENCE OF THE CONFIGURATION FILE VARIABLES(KEYS) 
     Case LCase("Folder") 
      If VariableValue <> "" Then Folder = VariableValue 
     End Select 
    End If 
    Wend 
    fConFile.Close 
End Sub 

'---------- Rename the documents ---------- 
Dim FLD 
Dim fil 
Dim strOldName 
Dim strNewName 
Dim strFileParts 

'Set the folder you want to search. 
Set FLD = FSO.GetFolder("C:\Users\Lenovo\Desktop\RenameFile\RenameFile.vbs") 

'Loop through each file in the folder 
For Each fil in FLD.Files 
    'Get complete file name with path 
    strOldName = fil.Path 

    'Check the file has an underscore in the name 
    If InStr(strOldName, "_") > 0 Then 
    'Split the file on the underscore so we can get everything before it 
    strFileParts = Split(strOldName, "_") 
    'Build the new file name with everything before the 
    'first under score plus the extension 
    strNewName = strFileParts(0) & ".txt" 

    'Use the MoveFile method to rename the file 
    FSO.MoveFile strOldName, strNewName 
    End If 
Next 

'Cleanup the objects 
Set FLD = Nothing 
Set FSO = Nothing 

私の設定ファイルには、これだけを持っています

Folder = "C:\Users\Lenovo\Desktop\RenameFile\Test - Copy" 
+1

を試してみてください?コードは何を期待していますか?実際には何をしていますか?エラーが出ていますか?彼らは何を言いますか? –

+0

行60、パスが見つかりません。 – Kyungsoo

+0

'C:\ Users \ Lenovo \ Desktop \ RenameFile \ RenameFile.vbs'は、フォルダではなくファイルである可能性が最も高いです。 'GetFolder'がそのファイルの親フォルダを返すことを期待しましたか?それが方法の仕組みではありません。代わりに 'FSO.GetFile(" ... ")。ParentFolder'を使用してください。 –

答えて

0
Set fso = CreateObject("Scripting.FileSystemObject") 
Set TS = fso.OpenTextFile("C:\Users\Lenovo\Desktop\RenameFile\ConfigPad.txt") 
SrcFolder = TS.ReadLine 
Set fldr = fso.GetFolder(SrcFolder) 
Set Fls = fldr.files 
For Each thing in Fls 
    If Left(thing.name, 1) = "_" AND IsNumeric(Mid(thing.name, 2, 8)) Then 
     thing.name = mid(thing.name, 10) 
    End If 
Next 

これは、設定ファイルの最初の行を想定し、パスです。アンダースコアで始まり8桁のファイルの名前を変更します。

+0

まだ動作しません。 ): – Kyungsoo

+0

私はあなたに気にすることはできません。どういう意味かというと、「それはうまくいかない」というような哀れなことを言う。私はそれをテストしたからです。 –

+0

そして、あなたは私の顔に嘘をつきたい、あなたは少し犯罪者だ。 –

0

期待どおりに動作しません何この

configfile = "Config File Name Here" 'Example : C:\Documents\Config.txt 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set tf = objFSO.OpenTextFile(configfile, 1) 

Do Until tf.AtEndOfStream 
    cl = tf.ReadLine 
    If InStr(cl, "Folder = ") > 0 Then 
     Folder = Replace(Replace(cl,"Folder = ",""),chr(34),"") 
     tf.Close 
     Exit Do 
    End If 
Loop 

For Each File in objFSO.GetFolder(Folder).Files 
    If InStr(File.Name, "_") > 0 And IsNumeric(Mid(File.Name,InStr(File.Name, "_") + 1,8)) Then 
     NewName = Replace(File.Name,Mid(File.Name,InStr(File.Name, "_"),9),"") 
     objFSO.MoveFile File.Path, objFSO.GetParentFolderName(File.Path) & "\" & NewName 
    End If 
Next 
MsgBox "Task Complete", vbOKOnly, "Remove Time Stamp" 
関連する問題