2013-08-05 491 views
0

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

目前我有以下幾點:

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 \全球創建的文件夾而不是包含在\所有子目錄READYSHARE \ USB_Storage \全球。所以然後我把它改爲:

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" 
) 

哪個顯然不起作用。

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

謝謝你的幫助。

問候, 斯科特

回答

1
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" 
) 
+0

非常感謝您的幫助。這個答案是非常透徹的,並且絕對可以發現。 – user2337871

1

您可以使用帶有/ 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> %%一)

+0

非常感謝您的工作和建議。非常感謝。 – user2337871

相關問題