[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] VBS更改文件名问题

笔者新建一个文件夹,里面创建3个文件,分别为01.vbs,02.vbs,MyFile.txt
01.vbs写入如下代码:
  1. Dim Fso
  2. Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
  3. Fso.GetFile("MyFile.txt").Name ="Hello.txt"
复制代码
双击运行,可以成功更改MyFile.txt文件名。
02.vbs写入如下代码:
  1. Dim Fso
  2. Dim a
  3. a = WScript.Arguments(0)
  4. Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
  5. Fso.GetFile("MyFile.txt").Name ="Hello.txt"
复制代码
在文件夹中拖动01.vbs放置到02.vbs上以运行,发现无法更改MyFile.txt文件名。报错“文件未找到”,错误代码800A0035
想请教一下各位老师,是什么原因导致无法更改文件名?

试了下,发现拖动执行时的命令行是
"%systemroot%\system32\wscript.exe" 02.vbs的完整路径 01.vbs的完整路径
当前目录路径是 %systemroot%\system32

TOP

02里也没用到变量a啊

TOP

回复 2# Five66


    太感谢您了!在这种情况下,该如何去重命名这个文件呢?

TOP

回复 3# jyswjjgdwtdtj


    主要是不明白a = WScript.Arguments(0)为什么会导致后面的重命名无法执行

TOP

  1. Dim Fso, a, oWshShell
  2. a = WScript.Arguments(0)
  3. Set oWshShell = CreateObject("WScript.Shell")
  4. MsgBox oWshShell.CurrentDirectory
  5. Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
  6. Fso.GetFile("MyFile.txt").Name ="Hello.txt"
复制代码
第四行显示当前路径
可以看到加上了第二行会导致当前路径改变,导致找不到文件

QQ 20147578

TOP

  1. Dim Fso, a, oWshShell
  2. a = WScript.Arguments(0)
  3. Set oWshShell = CreateObject("WScript.Shell")
  4. MsgBox oWshShell.CurrentDirectory
  5. Set Fso = WScript.CreateObject("Scripting.FileSystemObject")
  6. Fso.GetFile("MyFile.txt").Name ="Hello.txt"
复制代码
第四行显示当前路径
可以看到加上了第二行会导致当前路径改变,导致找不到文件

QQ 20147578

TOP

  1. set ws = createobject("wscript.shell")
  2. msgbox ws.currentdirectory
  3. ws.currentdirectory = "D:\"
复制代码

TOP

回复 4# SZT01


    使用MyFile.txt的完整路径,可以用WScript.ScriptFullName整出来
例如:
Fso.GetFile(WScript.ScriptFullName).ParentFolder.Path & "\MyFile.txt"

TOP

感谢各位老师指点!

TOP

返回列表