5
我需要在PowerShell中的列表中創建每個目錄的.zip。由於某種原因,我不知道如何更改爲每個目錄來運行相對於該路徑的命令。使用PowerShell在列表中的每個目錄上運行命令
這裏是我的情況:
$dir = Get-ChildItem d:\directory | ? {$_.PSIsContainer}
$dir | ForEach-Object {Set-Location $_.FullName;
Invoke-Expression "7z.exe A" + $_.Name + ".rar " + $_.Path + "\"}
的命令是醜陋的,但由於該7Zip的似乎解析文本的辦法,我只好走這條路。我相信該命令應該在每個目錄中創建一個ZIP文件,並將名稱設置爲與目錄名稱相同,並將所有文件包含在目錄中。
看起來好像我卡在一些PowerShell地獄,雖然我甚至無法訪問的對象的價值出於某種原因。
例如,如果我回顯$ dir,我會看到我的目錄列表。但是,如果我嘗試
gci $dir[1]
PowerShell不會返回任何內容。它實際上並沒有枚舉變量屬性中包含的目錄路徑,而是試圖列出包含在該值中的項目,當然這些項目是空的。
什麼給?我該怎麼做呢?
因此,我在另一個論壇中發現了另一種方法。我基本上需要將我的目錄導航功能與我的命令構建分離開來,並且我正在推翻一些東西。事實上,我忘記了通過數組遞歸的ForEach($ var in $ vars)方法。 http://sourceforge.net/p/sevenzip/discussion/45797/thread/49a7a85b/ – FoxDeploy
爲了讓您的zip調用tidier使用別名: Set-Alias sz「C:\ Windows \ 7za.exe」; sz A -tzip「$($ _。Name).rar」$ _。Path –