2017-07-04 16 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)。还包括有关*完全*您的代码“仍然无法工作”的信息。我们不是坐在电脑前,所以你需要描述你所看到的行为。既然你似乎已经把你的代码包装在一个过程中:你是否真的调用过程? –

相关问题