0

バッチスクリプトのグループを(XPから)Windows 7に移行するタスクがあり、sedを置換に使用する際にいくつかの問題が発生しました。私が行う必要があるのはLogPathを見つけることであり、二重引用符内のすべてをABCに置き換える必要があります(テストのためだけに-実際にはUNCパスになります)。

しかし、代わりに2つの奇妙な問題が発生しています。

  • 最初の二重引用符を削除しています
  • さらに重要なのは、引用符内の何かを実際に置き換えるのではなく、この文字列に追加するだけです。

スクリプトの関連する行は次のとおりです。

sed \\fs-bri-01\9732\9732.hfls -i -e s,LogPath="*.",LogPath="ABC",g

このスクリプトはWindowsXPで機能しますが、Windows7では機能しません。

4

2 に答える 2

0

おそらく、問題はUNCパスに起因します。

pushd \\fs-bri-01\9732
sed 9732.fls -i -e s,LogPath="*.",LogPath="ABC",g
popd

しかし、おそらく問題は引用文字とsedがそのargv配列を取得する方法に起因します。次に、試すことができます:

sed -i -e "s/LogPath=\".*\"/LogPath=\"ABC\"/g" \\fs-bri-01\9732\9732.hfls
于 2011-09-29T12:01:44.507 に答える
0

同じ状況で立ち往生している人のために、以下に投稿することを回避するための回避策をよく考えました。

sed \\fs-bri-01\9732\9732.hfls -i -e "s/LogPath=\"[\:A-Z0-9a-z_\\\/\.\ ]*\"/LogPath=\"ABC\"/g"
于 2011-09-30T13:37:20.283 に答える