Board logo

标题: [问题求助] VBS更改文件名问题 [打印本页]

作者: SZT01    时间: 2023-9-17 20:36     标题: 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
想请教一下各位老师,是什么原因导致无法更改文件名?
作者: Five66    时间: 2023-9-17 22:07

试了下,发现拖动执行时的命令行是
"%systemroot%\system32\wscript.exe" 02.vbs的完整路径 01.vbs的完整路径
当前目录路径是 %systemroot%\system32
作者: jyswjjgdwtdtj    时间: 2023-9-17 22:19

02里也没用到变量a啊
作者: SZT01    时间: 2023-9-18 09:02

回复 2# Five66


    太感谢您了!在这种情况下,该如何去重命名这个文件呢?
作者: SZT01    时间: 2023-9-18 09:05

回复 3# jyswjjgdwtdtj


    主要是不明白a = WScript.Arguments(0)为什么会导致后面的重命名无法执行
作者: czjt1234    时间: 2023-9-18 16:36

  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"
复制代码
第四行显示当前路径
可以看到加上了第二行会导致当前路径改变,导致找不到文件
作者: czjt1234    时间: 2023-9-18 16:36

  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"
复制代码
第四行显示当前路径
可以看到加上了第二行会导致当前路径改变,导致找不到文件
作者: 老刘1号    时间: 2023-9-18 19:19

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

作者: Five66    时间: 2023-9-18 20:04

回复 4# SZT01


    使用MyFile.txt的完整路径,可以用WScript.ScriptFullName整出来
例如:
Fso.GetFile(WScript.ScriptFullName).ParentFolder.Path & "\MyFile.txt"
作者: SZT01    时间: 2023-9-23 20:47

感谢各位老师指点!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2