1

ドライブをフリー レターにマップする PowerShell/バッチ スクリプトが必要です。または、テスト文字を無料のものにマッピングします。

これよりも簡単なものがあると確信しています。

$tab = @()

$tab = @('A:', 'B:', 'C:', 'D:', 'E:', 'F:', 'G:', 'H:', 'I:', 'J:', 'K:', 'L:', 'M:', 'N:', 'O,:', 'P:', 'Q:', 'R:', 'S:', 'T:', 'U:', 'V:', 'W' ,'X:', 'Y:', 'Z')

for($i = 0;$i -lt 26;$i++){

    if(net use $tab[$i] > $null){
        Write-Host $tab[$i] "`tExists"
    }
    else{
        Write-Host $tab[$i] "`tDoesn't exist"
    }
}

.bat スクリプトに何かを書き込むには、PS スクリプトが必要です。したがって、1) 私の PS スクリプトで自由文字を見つけて、次のように .bat スクリプトに書き込みます。

$freeletter | Output-File -Append ....

または2)私の.batスクリプトはそのようなことをします:

Is G: free ?
   No Is H: free ?
        Yes : Map It -> $mapdrive_1 = "H:"
              Is I: free ?
                    No  Is J: Free ?
                              Yes : Map it -> $mapdrive_2 = "J:"

#Once it's done I got my ONLY 2 mapped drives
$mapdrive_1
$mapdrive_2

#then i can do
net use $mapdrive_1 "my\path1"
net use $mapdrive_2 "my\path1"
start robocopy $mapdrive_1 $mapdrive_2 /options
net use $mapdrive_1 /DELETE
net use $mapdrive_2 /DELETE

net use $mapdrive_1 "my\path2"
net use $mapdrive_2 "my\path2"
start robocopy $mapdrive_1 $mapdrive_2 /options
net use $mapdrive_1 /DELETE
net use $mapdrive_2 /DELETE

私の言いたいことを理解していただければ幸いです:)

よろしく、

ニコ。

4

2 に答える 2

4

これにより、すべての空き文字が出力されます。次に、select-object にパイプして最初の文字だけを取得できます。

ls function:[a-z]: -name | where {-not (get-psdrive $_[0] -ea 0)}
于 2013-07-09T12:22:23.537 に答える