假設我們有以下的目錄結構:「GET-childitem * -recurse」 下降一級目錄
~dir00
|-> dir10
| |-> dir20
| |-> file1.txt
|-> dir11
|-> file2.txt
現在,假設〜dir00是當前目錄。我會期待這兩個命令get-childitem * -recurse
和get-childitem -recurse
產生相同的結果。但是,他們沒有。第二種行爲就是我所期望的。
我正在嘗試編寫一個小型工具庫供我們的腳本程序使用。我需要編寫的一個工具是複製和備份文件集的工具。作爲輸入,我得到了一些告訴我什麼是文件/目錄等的東西。複製。我無法知道用戶可以提供什麼。他們可能會提供諸如「*」的通配符,他們可能會提供文件名,他們可能會提供-recurse參數等等。輸入被送到get-childitem。當「路徑」只是「*」時,獲取兒童行爲的不一致性是一個大問題。爲什麼get-childitem在提供「*」的路徑和-recurse選項時突然丟棄第一級目錄? (請注意,它只能刪除第一級目錄。)有沒有什麼辦法可以防止這種奇怪的行爲?
現在,它變得更棒了。如果我們把一個文件放在根目錄下,那麼文件結構變成
~dir00
|-> dir10
| |-> dir20
| |-> file1.txt
|-> dir11
| |-> file2.txt
|-> file3.txt
然後這些目錄突然沒有被丟棄。要重現此操作,只需執行以下腳本:
cd $Env:temp
mkdir dir00\dir10\dir20 | out-null
cd dir00
mkdir dir11 | out-null
echo 'hello world 1'>dir10\dir20\file1.txt
echo 'hello world 2'>dir11\file2.txt
$list1 = get-childitem -recurse
echo 'Results of get-childitem -recurse: '
$list1
echo ''
echo 'Number of items:'
$list1.length
echo ''
$list2 = get-childitem * -recurse
echo 'Results of get-childitem * -recurse: '
$list2
echo ''
echo 'Number of items:'
$list2.length
echo ''
echo "hello world 3">file3.txt
$list3 = get-childitem * -recurse
echo 'Results of get-childitem * -recurse: '
$list3
echo ''
echo 'Number of items:'
$list3.length
echo ''
+1從我,好問題:) – nimizen