Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何使用命令提示符列出目录中的文件名,但不包括前3个字符_Vba_Batch File_Command Line_Command Prompt - Fatal编程技术网

Vba 如何使用命令提示符列出目录中的文件名,但不包括前3个字符

Vba 如何使用命令提示符列出目录中的文件名,但不包括前3个字符,vba,batch-file,command-line,command-prompt,Vba,Batch File,Command Line,Command Prompt,我试图编写一些vba代码,将一行代码发送到命令提示符并执行它。我已经记下了那个部分,但我需要帮助使实际代码正常工作 我想列出特定文件夹中.doc文件扩展名的所有文件,但我想排除打印到输出文本文件的文件名的前三个字符。(注意:我使用vba是因为这是我想在单个vba宏中使用的几个不同命令之一,我不能使用批处理文件b/c它们在我的系统上被阻止,所以我想直接使用命令提示符) 下面的代码起作用,并给出了不带文件扩展名的文件名(即ABC201704.doc将返回为ABC201704) 但是,我不知道如何修改

我试图编写一些vba代码,将一行代码发送到命令提示符并执行它。我已经记下了那个部分,但我需要帮助使实际代码正常工作

我想列出特定文件夹中
.doc
文件扩展名的所有文件,但我想排除打印到输出文本文件的文件名的前三个字符。(注意:我使用vba是因为这是我想在单个vba宏中使用的几个不同命令之一,我不能使用批处理文件b/c它们在我的系统上被阻止,所以我想直接使用命令提示符)

下面的代码起作用,并给出了不带文件扩展名的文件名(即
ABC201704.doc
将返回为
ABC201704

但是,我不知道如何修改它,使其不包含前3个字符(即,我希望它返回
201704
,而不是
ABC201704

任何帮助都将不胜感激!我尝试使用以下链接,但我不知道如何使其适用于我的情况。

未测试:

@echo off
setlocal enableDelayedExpansion

for %%a in ("C:\Test\ABC*.doc") do (
   set docname=%%~nxa
   echo !docname:~3!
) 
在命令提示符中:

cmd /v:on  /c "for %a in  ("C:\Test\ABC*.doc") do set  docname=%~nxa & echo !docname:~3!"

您是否特别需要命令提示符中的结果?在VBA中列出文件的方法有很多,使用命令提示符是很不寻常的。我的最终目标是在文本文件中列出结果。这些文件位于服务器上,我确实提出了一些vba代码,可以满足我的需要,但所花的时间比我想要的要长得多。我在问题中列出的代码运行大约需要30秒,而我尝试仅使用vba和文件系统对象(FSO)功能进行的工作可能需要45分钟,因为我正在遍历30000个文件。考虑到我将要做很多次,我希望它尽可能快,而且似乎命令提示符是做这件事最快的方式。好吧,谢谢,我打算建议FSO。如果你能在这里找到一个合适的答案,我真的会对时间比较感兴趣,你介意发布结果吗?是的,我绝对会发布我的结果,我试着在这里发布我的vba代码来分享,但似乎太多字符了,啊,也许这就是问题所在。。。只需几行代码就可以获得文件路径。一般来说,FSO非常快,45分钟似乎太长了。你能发布相关的部分吗?看起来cmd提示在我尝试时说语法不正确that@ampsoccer17-可以再试一次吗?键入,删除中的
的第一个或第二个实例,并使用
删除相同的实例
cmd/c/v:on,用于在(“c:\Test\ABC*.doc”)中为%a设置docname=%~nxa&echo!文件名:~3
@Compo-原来整个命令都需要加引号,所以现在我们非常接近了。它成功地删除了前3个字符,但它包含文件扩展名,我只需要它不包含扩展名
cmd /v:on  /c "for %a in  ("C:\Test\ABC*.doc") do set  docname=%~nxa & echo !docname:~3!"