1

比較的単純なスクリプトだと思うもの実行しています。

$txtPath = "c:\users\xxxxxx\desktop\cgc\tx\" 
$srcfiles = Get-ChildItem $txtPath -filter "*.txt*"

ForEach($txtfile in $srcfiles) { 
        Write-Host $txtfile
        Get-Content $txtfile
}

次の出力が得られます。

Automatic_Post-Call_Survey_-_BC,_CC.txt
Get-Content : Cannot find path 'C:\users\x46332\desktop\cgc\Automatic_Post-Call_Survey_-_BC,_CC.txt' because it does no
t exist.
At C:\users\x46332\desktop\cgc\testcount2.ps1:34 char:13
+     Get-Content <<<<  $txtfile
    + CategoryInfo          : ObjectNotFound: (C:\users\x46332...ey_-_BC,_CC.txt:String) [Get-Content], ItemNotFoundEx
   ception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

Write-Host $txtfileこれはすぐに続くからの出力でGet-Content $txtfileありget-content、私の問題の中心のようです。

行をコメントアウトするGet-Contentと、スクリプトはファイル名のリストをコンソールに生成します。$txtPathこれは、が適切に定義されていることを示唆しています。Get-Contentただし、同じファイル/同じ変数を追加すると、何らかの理由で\txパスの部分が検索文字列から消えます。私のファイルGet-Content名は印刷されますが、ファイル名のパスが印刷されただけで見つかりません。

「ディレクトリが存在しません」というエラーは、実際にはディレクトリが存在しないということではないと思います。では、何を見ればよいのでしょうか?私のコードにはエラーを隠すためのスペースがあまりありませんが、それを見つけることができません...どう思いますか?

4

1 に答える 1

2

Get-Content にはフル パスが必要です。例:

Get-Content $txtFile.FullName

を指定するGet-Content $txtFileと、PowerShell は引数 $txtFile を必要な引数 Path に強制変換しようとし、そのために FileInfo オブジェクトを文字列に強制変換します。このプロセスでは、ファイルの名前だけが生成されます。

これを行う別の方法は次のとおりです。

$txtFile | Get-Content
于 2013-01-29T17:00:42.990 に答える