2017-07-04 17 views
0

我在必須重命名的文件夾中有一堆PDF。它們都是這樣構建的:YYYYMMDD_Text.pdf。系統是Windows   7.在位置4和6的文件夾中的所有文件的名稱中插入「 - 」

我想在日期之間插入一個-,所以文檔看起來像: YYYY-MM-DD_Text.pdf

這是我得到的,但它不工作,我搜索了十幾個線程,但無法找到解決方案:

Ordner = "C:\xte Stelle\Test Doku" 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set Fld = fso.GetFolder(Ordner) 

    For i = 0 To UBound(Arr) 
     WScript.Echo i & vbTab & Arr(i) 
    Next 

    For Each File In Folder.Files 
     File.Name = Left(File.Name, 4) & "-" & Mid(File.Name, 6) & "-" & Mid(File.Name, 8) 
End Sub 

編輯:

這是我現在得到。我可以運行它,它不會崩潰,但也不起作用。它什麼都不做。任何想法呢?

Ordner = "C:\xte Stelle\Test Doku" 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set Fld = fso.GetFolder(Ordner) 

Sub test 
    For Each File In Fld.Files 
     File.Name = Left(File.Name, 4) & "-" & Mid(File.Name, 5, 2) & "-" & Mid(File.Name, 7) 
    Next 
End Sub 
+0

如前所述:您需要實際調用該過程。在腳本的末尾添加一行'test'。 –

+0

我有點困惑,但工作!非常感謝您的幫助 – Spike87

回答

3

您的代碼不僅不完整,而且徹頭徹尾的破碎。

  • 您有End Sub沒有相應的Sub
  • 您將文件夾對象分配給變量Fld,但是然後枚舉變量Folder中的文件。
  • 您的第二個For Each循環缺少Next
  • Mid函數返回由第二個參數定義的位置開始的第三個參數定義的字符數。如果省略第三個參數,則將返回從第三個參數定義的位置到字符串結尾的子字符串。因此,你的文件名重建應該是這樣的:

    File.Name = Left(File.Name, 4) & "-" & Mid(File.Name, 5, 2) & "-" & Mid(File.Name, 7) 
    

注:,如果你把你的代碼的程序或功能,您需要實際調用該過程/函數獲取代碼執行。

+0

Ordner = 「C:\ XTE顆星\測試數獨」 FSO設置=的CreateObject( 「Scripting.FileSystemObject的」) 設置FLD = fso.GetFolder(Ordner) 對於i = 0到UBound(Arr) WScript.Echo i&vbTab&Arr(i) Next For Each File in Fld.Files File.Name = Left(File.Name,4)&「 - 」&Mid(File.Name, 5,2)&「 - 」&Mid(File.Name,7) \t下一個首先:對不起,我不知道如何格式化這個塊,如果按回車它只是發送整個塊作爲註釋。 : 非常感謝你!我修改了代碼,但它仍然不起作用。你能幫我找到一個解決方案嗎? – Spike87

+0

@ Spike87如果您需要提供其他信息,請[編輯您的問題](https://stackoverflow.com/q/44900125/1630171)。還包括有關*完全*您的代碼「仍然無法工作」的信息。我們不是坐在電腦前,所以你需要描述你所看到的行爲。既然你似乎已經把你的代碼包裝在一個過程中:你是否真的調用過程? –

相關問題