【问题标题】:Batch file that creates folder with wildcard in path在路径中创建带有通配符的文件夹的批处理文件
【发布时间】:2015-07-28 09:30:37
【问题描述】:

我想编写一个批处理文件来创建一个文件夹(如果它不存在)并将某个文件复制到该文件夹​​中。到目前为止一切顺利。

问题是路径中的一个文件夹有时会略有不同,因此需要使用通配符。

以下代码可以正常工作,但显然无法创建文件夹(报告)。因此,如果该文件夹不存在,它就什么也不做。

for /r "c:\Users\%USERNAME%\AppData\Local\Packages" &&G in ("LocalState\acn\Reports") do @if exist %%G xcopy /s /i /y c:\temp\Reporting "%%G"

完整路径是: c:\Users\FSchneider\AppData\Local\Packages\“WILDCARD"\LocalState\acn\Reports\

有什么想法吗?

【问题讨论】:

  • 为什么是&&G in?应该是%%G in。
  • 对不起。错字。你是对的!
  • 现在可以用了吗?
  • 我上面提到的那篇文章确实如此。但在此之前我需要一些代码,它会创建文件夹“报告”(如果它不存在的话)

标签: batch-file wildcard xcopy


【解决方案1】:
  • 在for 中添加/d 开关,表示您正在寻找目录,而不是文件
  • 在通配符中添加* 并省略引号以表明它实际上是通配符
  • 现在不需要if exist

    for /d /r "%LocalAppData%\Packages" %%G in (LocalState\acn.*) do xcopy /s /i /y c:\temp\Reporting "%%G\Reports"
    

【讨论】:

  • 感谢您的回复。不知何故还是不行。不断给我错误消息,提示无法创建文件夹。也许简单地添加一段仅创建文件夹的单独代码会更容易?
  • “acn”文件夹始终存在。事实上,除了通配符起作用的文件夹之外,所有文件夹都可以。它的名称包含一个始终固定的名称和一个不时变化的数字代码。
  • 谢谢!至少现在正在创建文件夹。不幸的是,'c:\temp\Reporting' 的内容没有被复制。
  • 谢谢伙计!现在工作得很好!
【解决方案2】:

下一个脚本可能会有所帮助。

@ECHO OFF
SETLOCAL enableextensions

set "_fldrtop=%USERPROFILE%\AppData\Local\Packages"

set "_fldrsub=LocalState\acn"
if not "%~1"=="" set "_fldrsub=%~1"     :: my testing data, remove this line

set "_fldrlow=Reports"
if not "%~2"=="" set "_fldrlow=%~2"     :: my testing data, remove this line

for /F "delims=" %%G in ('dir /B /AD "%_fldrtop%"') do (
  if exist "%_fldrtop%\%%G\%_fldrsub%\" (
    if exist "%_fldrtop%\%%G\%_fldrsub%\%_fldrlow%\" (
      echo echo "%_fldrtop%\%%G\%_fldrsub%\%_fldrlow%\"
    ) else (
      echo md "%_fldrtop%\%%G\%_fldrsub%\%_fldrlow%\"
    )
    rem echo xcopy /s /i /y c:\temp\Reporting "%_fldrtop%\%%G\%_fldrsub%\%_fldrlow%\"
  )
)

输出:

==>D:\bat\SO\31672436.bat

==>D:\bat\SO\31672436.bat "LocalState\Cache"
md "C:\Users\UName\AppData\Local\Packages\winstore_cw5\LocalState\Cache\Reports\"

==>D:\bat\SO\31672436.bat "LocalState\Cache" 2
echo "C:\Users\UName\AppData\Local\Packages\winstore_cw5\LocalState\Cache\2\"

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2023-04-06
    • 2014-11-05
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2019-05-14
    相关资源
    最近更新 更多