簡體   English   中英

使用Windows命令行在每個目錄下創建子目錄

[英]Create Subdirectories Under Each Directory Using Windows Command Line

我正在嘗試創建一個Windows命令行腳本,這將允許我在我的網絡驅動器上存在的每個文件夾下重新創建目錄結構。 我最初在CMD中創建代碼,然后在我獲得所需結果時將其轉換為批處理文件。

目前我有以下幾點:

set location=\\READYSHARE\USB_Storage\Global

for /r %location% %f in ("dir %location% /a:D") do (

MD "%location%\Archived Tenants"
MD "%location%\Current tenant -"
MD "%location%\Current tenant -\Tenancy Sign up Pack"
MD "%location%\Owners\"
MD "%location%\Owners\Advertising Photos"
MD "%location%\Owners\Invoices"
MD "%location%\Owners\Quotes"
MD "%location%\Owners\Routine Inspections"
)

顯然這不會給我所需的輸出,因為文件夾是在\\ READYSHARE \\ USB_Storage \\ Global下創建的,而不是在\\ READYSHARE \\ USB_Storage \\ Global中包含的所有子目錄。 所以我把它改成了:

set location=\\READYSHARE\USB_Storage\Global

for /r %location% %f in ("dir %location% /a:D") do (

MD "%f\Archived Tenants"
MD "%f\Current tenant -"
MD "%f\Current tenant -\Tenancy Sign up Pack"
MD "%F\Owners\"
MD "%f\Owners\Advertising Photos"
MD "%f\Owners\Invoices"
MD "%f\Owners\Quotes"
MD "%f\Owners\Routine Inspections"
)

這顯然也無效。

有人可以幫我提供如何產生預期結果的幫助嗎?

謝謝您的幫助。

問候,斯科特

for /r %location% %f in ("dir %location% /a:D") do (

您將for /r (遞歸處理)的語法與for /f (文件處理/命令替換)的語法混合在一起。 此外,如果您在批處理文件中運行它,則需要將循環變量( %%f )上的%加倍。

如果要直接在%location%下創建文件夾結構,請執行以下操作:

@echo off

setlocal

set "location=\\READYSHARE\USB_Storage\Global"

md "%location%\Archived Tenants"
md "%location%\Current tenant -"
md "%location%\Current tenant -\Tenancy Sign up Pack"
md "%location%\Owners\"
md "%location%\Owners\Advertising Photos"
md "%location%\Owners\Invoices"
md "%location%\Owners\Quotes"
md "%location%\Owners\Routine Inspections"

如果要在%location%所有頂級文件夾下創建文件夾結構,請執行以下操作:

@echo off

setlocal

set "location=\\READYSHARE\USB_Storage\Global"

for /d %%d in (%location%\*) do (
  md "%%d\Archived Tenants"
  md "%%d\Current tenant -"
  md "%%d\Current tenant -\Tenancy Sign up Pack"
  md "%%d\Owners\"
  md "%%d\Owners\Advertising Photos"
  md "%%d\Owners\Invoices"
  md "%%d\Owners\Quotes"
  md "%%d\Owners\Routine Inspections"
)

如果要在%location% (包括其子文件夾)的所有子文件夾下創建文件夾結構,請執行以下操作:

@echo off

setlocal

set "location=\\READYSHARE\USB_Storage\Global"

for /f "delims=" %%d in ('dir /b /a:d /s "%location%"') do (
  md "%%d\Archived Tenants"
  md "%%d\Current tenant -"
  md "%%d\Current tenant -\Tenancy Sign up Pack"
  md "%%d\Owners\"
  md "%%d\Owners\Advertising Photos"
  md "%%d\Owners\Invoices"
  md "%%d\Owners\Quotes"
  md "%%d\Owners\Routine Inspections"
)

您可以使用帶有/ F選項的FOR命令來解析DIR命令的輸出,然后使用%a變量作為子目錄的名稱。

for /f %a in ('dir /a:D /B %location%') do (
  MD "%location%\%a\Archived Tenants"
  MD "%location%\%a\Current tenant -"
  MD "%location%\%a\Current tenant -\Tenancy Sign up Pack"
  MD "%location%\%a\Owners\"
  MD "%location%\%a\Owners\Advertising Photos"
  MD "%location%\%a\Owners\Invoices"
  MD "%location%\%a\Owners\Quotes"
  MD "%location%\%a\Owners\Routine Inspections"
)

注意:當您將其轉換為批處理文件時,您需要復制變量名稱中的%(%a> %% a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM