Batch file 如何编写批处理脚本,根据用户输入将目录更改为通配符文件夹,以便复制

Batch file 如何编写批处理脚本,根据用户输入将目录更改为通配符文件夹,以便复制,batch-file,directory,wildcard,Batch File,Directory,Wildcard,我希望能够从桌面上的文件夹中复制zip文件。该文件夹每周将使用不同的名称。我们将处理并删除它。我希望能够使用用户输入来查找桌面上包含该名称的任何文件夹。找到后,我希望能够进入该文件夹,并将其中的zip文件复制到名为PROCESSED LINKFILES的文件夹中。这是剧本。第一部分工作正常,但我无法通过使用通配符功能*获得用户输入以找到正确的文件夹。请帮助: usermessage.vbs 请阅读的帮助,然后在命令行中尝试此双FOR循环 如您所见,它将在所有f*文件夹上循环,对于每个文件夹,if

我希望能够从桌面上的文件夹中复制zip文件。该文件夹每周将使用不同的名称。我们将处理并删除它。我希望能够使用用户输入来查找桌面上包含该名称的任何文件夹。找到后,我希望能够进入该文件夹,并将其中的zip文件复制到名为PROCESSED LINKFILES的文件夹中。这是剧本。第一部分工作正常,但我无法通过使用通配符功能*获得用户输入以找到正确的文件夹。请帮助:

usermessage.vbs 请阅读的帮助,然后在命令行中尝试此双FOR循环

如您所见,它将在所有f*文件夹上循环,对于每个文件夹,if将在所有f*文件上循环

因此,根据您的需求调整此简单策略,并为其提供适当的BAT语法,您可以开始尝试此

@echo off
set storename=%1
set myfolder=C:\Users\ADMINISTRATOR\Desktop\
set dstfolder=%myfolder%\PROCESSED_FILES
set myfiles=*.zip
for /d %%d in (%myfolder%\*%storename%*) do (
  for %%f in (%%d\%myfiles%) do (
    echo copy %%f %dstfolder%
  )
)

删除回音之前请仔细测试

不能在路径的两个部分使用通配符。首先制作cd C:\Users\ADMINISTRATOR\Desktop\*%StoreName%*然后复制*.zip C:\Users\ADMINISTRATOR\Desktop\PROCESSED\u linkfiles我已经尝试过了。它说目录无效。例如,如果我输入名称APPLE,它会说:C:\Users\ADMINISTRATOR\Desktop*APPLE*是无效目录。换句话说,它将*视为一个字符而不是通配符。为我工作!C:\Documents and Settings\Test>\u dir/b\u文件夹一个名称文件夹三个名称文件夹两个名称C:\Documents and Settings\Test>\u cd两个\uC:\Documents and Settings\Test\文件夹两个名称。这里是WindowsXP5.1.2600。可能您错过了桌面和*%StoreName%*?@echo off set StoreName=%1 set myfolder=C:\Users\ADMINISTRATOR\Desktop\set dstfolder=%myfolder%\PROCESSED\u FILES set myfiles=*.zip for/d%%d在%myfolder%*%StoreName%*中为%%f在%%d\%myfiles%do echo copy%%f%dstfolder%中为它不起作用。当我检查我希望看到zip文件的“已处理文件”文件夹时,它是空的。
for /d %d in (\temp\f*) do @for %f in (%d\f*) do @echo %f
@echo off
set storename=%1
set myfolder=C:\Users\ADMINISTRATOR\Desktop\
set dstfolder=%myfolder%\PROCESSED_FILES
set myfiles=*.zip
for /d %%d in (%myfolder%\*%storename%*) do (
  for %%f in (%%d\%myfiles%) do (
    echo copy %%f %dstfolder%
  )
)