データダンプからファイルをエクスポートしようとしていますが、何か助けが必要です。私がエクスポートしようとしているファイルはすべてpdf、doc、xlsx、jpg、png形式です。データダンプの組み立て方法により、ファイル名はf0.pdf、f0.docなどに変更されました。また、ファイルは異なるサブフォルダ(例:Data \ 000 \ 004 \ 0000001212)にあります。さらに、サブフォルダ内にファイルがある場合は、m.xmlファイルが添付されています(参考のため、hereを参照してください)。PowerShellでファイルを書き出す問題
ex: <TextVar length="255" field="LDDOCUMENTNAME">ABC.pdf</TextVar>
私は名前を変更し、通過しなかったが、PDFファイルの一部をPowerShellを使用してファイルをエクスポートしようとした(I:それは「LDDOCUMENTNAME」フィールドで反射された元のファイル名が含まれているようm.xmlファイルが重要ですサブフォルダ内のすべてのpdfファイルを検索し、エクスポートされたpdfファイルの数と比較しました)。
は、これは私のスクリプトは次のようになります。
$fsoFiles = Get-ChildItem -Path C:\Files -Filter *m.xml* -Recurse
ForEach($fsoFile in $fsoFiles)
{
$docM = Select-String $fsoFile -Pattern "LDDOCUMENTNAME"
$txtNewFile = $docM.Line.Substring(0,($docM.Line.Length-10))
$txtNewFile = $txtNewFile.Split(">")[-1]
$txtExtension = $txtNewFile.Split(".")[-1]
$txtOldFile = ([string]$fsoFile.Directory+"\"+"f0."+$txtExtension)
Copy-Item $txtOldFile C:\Extracted\$txtNewFile
}
基本的に私はすべてのサブフォルダを検索し、m.xmlファイルとフォルダのみをフィルタリングするためのPowerShellを尋ねました。 PowerShellは、 "LDDOCUMENTNAME"フィールドにある値を使用して、対応するファイルの名前を元のファイル名に戻します。
私は私のスクリプトを実行すると、私はこれらのエラーメッセージの束を提示しています:
You cannot call a method on a null-valued expression.
At line:6 char:5
+ $txtNewFile = $docM.Line.Substring(0,($docM.Line.Length-10))
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
私は、これはPowerShellは、PDFファイルの一部をエクスポートできなかった理由であると仮定していますか?おそらく、対応するm.xmlファイルの "LDDOCUMENTNAME"フィールドが空白ですか?
は、私は、エクスポートすることができなかったファイルの場所を得ることができるかどうかを確認するために私のFORループの内側にIF文を追加してみましたが、私は同じエラーメッセージと会った:
If ($docM = $null)
{
Get-ChildItem -Path C:\Files -include !$docM -Recurse -Force -Name C:\Extracted\listofPaths.txt
}
else
は誰をいここでこれを達成する方法を知っていますか?私は文字通り私の髪を引っ張っています。どんな助けでも大歓迎です。ありがとう!
XMLをXML文書として解析するのはなぜですか?部分文字列の分割を分割する必要はありませんか? – vonPryz
返信いただきありがとうございます!これは実際にPowerShellを使用して初めてのことです。どのように私がそれを達成することができるかについてあなたは正しい方向で私を指摘できますか?ありがとう! –
正しい方向がグーグルである...とにかく、[SO](http://stackoverflow.com/a/11344234)はすでに良い答えがあります。実装に問題がある場合は、フラグメントの代わりに有効なXMLドキュメントを提供してください。 – vonPryz