簡體   English   中英

我應該使用PowerShell還是CMD.exe?

[英]Should I use PowerShell or CMD.exe for this?

我應該用什么來完成下面描述的任務?

任務:

  1. 橫向進入文件夾的每個子文件夾
  2. 如果子文件夾具有文件夾名稱XXX,則調用某些命令

如果您決定使用PowerShell,這是我推薦的,這項任務非常簡單:

PS> Get-ChildItem <path> -r | Where {$_.PSIsContainer -and $_ -match '<regex>'} |
    Foreach { <do something with each DirectoryInfo object stored in $_> }

使用別名的短版本是(注意此版本以遞歸方式從當前目錄中刪除指定的目錄):

PS> dir . -r | ?{$_.PSIsContainer -and $_ -match 'Backup'} | Remove-Item -v -wh

此版本顯示了它將刪除哪些目錄而不實際刪除它們。 刪除-wh(whatif)以使其實際刪除文件夾並告訴您刪除了哪些文件夾。 這是PowerShell的“生產”方面。 您可以在大多數具有破壞性的cmdlet上使用-WhatIf(或-wh),以便在不實際執行破壞性操作的情況下查看命令“將”執行的操作。 當您想要基於通配符殺死進程時,這非常方便,例如:

PS> Get-Process *host | Stop-Process -WhatIf

另一個選擇是使用-Co​​nfirm,它會詢問你每個進程,你可以告訴它是,不,是對所有人,對所有人都是。 從生產的角度來看,我認為PowerShell比其他一些選項有明顯的優勢。 我只是在說'。 :-)

PowerShell如果介於這兩者之間。 CMD.exe太痛苦了。

替代品是腳本語言,如Perl和Python。

我會建議你完成這項任務時最舒服的事情,特別是如果你必須定期這樣做的話。 批處理文件,powershell,VBScript,JScript,Ruby,Perl,Python,C#等等。 無論你能做得多么快。

Powershell和更高端的東西將為您提供更多控制,但您甚至可以使用帶有VBScript或JScript的Windows腳本宿主來完成此操作。 在Powershell之前,我會通過編寫簡單的VB腳本並使用WScript運行它來處理許多這樣的簡單任務。

我還要提一下,如果你需要在另一台機器上使用這么簡單的腳本,你幾乎可以保證WScript將在那里,如果它是Windows XP或更高版本,而Powershell只在較新版本的Windows上。 或者使用C#...如果你知道的話。 無論你是否意識到,你的機器上都可能有C#編譯器。

簡單示例:在我的音樂收藏中,我需要將具有圖像相關擴展名和音樂播放列表擴展名的所有文件的屬性設置為隱藏,以防止Windows Media Player自動將這些文件添加到我的庫中。 它將在圖片庫中填充各種專輯封面。 我剛剛編寫了一個快速的JScript,它使用WScript.exe執行遍歷目錄結構並設置這些屬性。 我定期運行它,當我收到新音樂時,iTunes或WMP會自動將這些圖像添加到目錄中。

鏈接:

我已經在VBScript中完成了這一百萬次。 它只需要一對精簡的遞歸函數即可完成。 而且,作為VBScript,可以完成整個“它”。

如果你必須匆匆忙忙地使用你所熟悉的語言! 否則,如果您願意每天學習新東西並使用Windows機箱,請使用PowerShell。 PowerShell現在遍布MS產品,如Exchange 2007,SQL Server 2008,並隨Windows 7一起安裝。

暫無
暫無

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

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