gpt4 book ai didi

vba - 如何将命令行变量的值返回到立即窗口

转载 作者:行者123 更新时间:2023-12-04 20:31:22 25 4
gpt4 key购买 nike

情况:

我想从 Windows 命令提示符返回字符串变量的实际值。

命令

cd C:\Users\User\Desktop\Testfolder && (for /f "eol=: delims=" %F in ('dir /b /od *.csv') do @set "newest=%F" ) && echo %newest%

在命令提示符窗口中执行时,正确返回值,例如“Test2.csv”

在下面的代码中,我无法将此值返回到 Excel 中的即时窗口;相反,我得到了我发出的命令,它是 "%newest%"

代码:

Public Sub Test
Debug.Print CreateObject("wscript.shell").exec("cmd /c cd C:\Users\User\Desktop\Testfolder && (for /f ""eol=: delims="" %F in ('dir /b /od *.csv') do @set ""newest=%F"" ) && echo %newest%").StdOut.ReadAll
End Sub

命令提示符窗口中的结果:

Result

立即窗口中的结果:

Immediate window

我尝试过的:

我看了很多资源;其中一些我在最后的引用资料中列出。各种尝试包括:

1) 我曾尝试过转义,但我没想到会成功,方法是:

echo %%newest%%   '<==== give %Test2.csv%  in CLI and %%newest%% in immediate

2)添加等待,例如:

Debug.Print CreateObject("wscript.shell").exec("cmd /c cd C:\Users\User\Desktop\Testfolder && (for /f ""eol=: delims="" %F in ('dir /b /od *.csv') do @set ""newest=%F"" ) && PING localhost -n 2 >NUL && echo %newest%").StdOut.ReadAll

3) 管道传输到文本文件并读回:

 CreateObject("wscript.shell").exec ("cmd /c cd C:\Users\User\Desktop\Testfolder && (for /f ""eol=: delims="" %F in ('dir /b /od *.csv') do @set ""newest=%F"" )&& echo %newest% > C:\Users\User\Desktop\Testfolder\fileInfo.txt") '.StdOut.ReadAll
Debug.Print CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\UsersUser\Desktop\Testfolder\fileInfo.txt", ForReading).ReadAll

在最后一个例子中,有一次这将实际值写入文件,但之后继续写入 "%newest%"

很明显,我没有从命令行获取执行语句的结果。

请问如何返回实际值?

附加信息:

这是一系列切换到指定目录的命令;循环遍历该文件夹中的 csv 文件;查找最近修改的文件并返回其名称。

引用资料:

  1. Get Return Value of Shellexecute
  2. Reading output from shell
  3. Setting and using variable within same command line in windows cmd
  4. Scripting - Waits

最佳答案

所以归功于@FlorentB 的答案是使用环境变量扩展标志。这并入最终答案,给出了以下内容,它返回指定目录中最后修改文件的文件名。

CreateObject("wscript.shell").exec("cmd /V /C cd " & myDir & " && (for /f ""eol=: delims="" %F in ('dir /b /od *.csv') do @set ""newest=%F"" ) && echo !newest!").StdOut.ReadAll

关于vba - 如何将命令行变量的值返回到立即窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com