2016-12-07 12 views
0

非常に簡単な配達メモを作成するant関数を作成しています。私が追跡しようとしていることの1つは、ファイルの所有者です。これはWinのソリューションなので、私が考えることのできる唯一のことは、execタスクを使用してファイルにdir/qを実行し、そのファイル所有者をリスティングからフックすることです。私はその後、私はすべての試合が届かないreqexpでやっている\AntのWindowsでファイル所有者を取得

Volume in drive D is Data 
Volume Serial Number is xxxx-yyyy 

Directory of d:\test\zips 

29/11/2016 13:19   32,706 SERVER\Administrators file.zip 
     1 File(s)   32,706 bytes 
     0 Dir(s) 151,247,241,216 bytes free 

残念なことに関係なく、次のユーザー名を引き出す最初の5行をスキップする必要がありますが、正規表現は私に新しく、まだ私はそれを騒がせていない。

答えて

0

Antでの動作はわかりませんが、ユーザとファイル名を取得するには.*\/.*?(\w+\\\w+) *(.*)を正規表現として使用できます。 これをWindowsの出力で実行した後、ユーザーは$ 1になり、ファイル名は$ 2になります。

あなたはここでそれを試すことができます:正規表現とdir /qの出力を解析https://regex101.com/r/9RGqLz/6

+0

ありがとう、それは非常に助けになりました。ありがとう。 – dazednconfused

0

は、エラーが発生しやすいです。 Windowsの新バージョンでは、dir /qが出力し、Antスクリプトが壊れる可能性があります。

> powershell "Get-Acl d:\test\zips\file.zip | foreach { $_.Owner.split('\')[1] }" 

上記のコマンド出力:

代わりに、ファイルの所有者を取得するためのPowerShellを使用することを検討してAntスクリプトで

Administrators 

、これは次のようになります。

<exec executable="powershell" osfamily="windows" outputproperty="owner"> 
    <arg value="Get-Acl d:\test\zips\file.zip | foreach { $_.Owner.split('\')[1] }"/> 
</exec> 
<echo>Owner: ${owner}</echo> 

上記のスクリプト出力:

[echo] Owner: Administrators 
+0

私はあなたのポイントを見ます。この例では、純粋にdir/qに固執します。なぜならそれはパワーシェルを持つ '新しい'アイテムを導入しないからです。最終的に私はそれを変更してLinuxコマンドも追加しなければならないので、それを実装するかもしれません。 ありがとう:) – dazednconfused

関連する問題