2017-11-08 13 views
0

ファイル内の特定の文字列を別の変数文字列に置き換えます。 名前がattack_1〜attack_100で、番号が1つしかない100個のファイルがあります。 また、私は1つのファイル名を持っています1.dat 私は特定の文字列ではなく、 "角度=変数"で置換する1.datファイルの文字列 "angle = 5"を持っていますそれぞれのattack.txtファイル。 2種類のバッチを書きますが、どちらもできません。cmdを使用して変数を検索して置き換えます

for /l %%x in (1, 1, 100) do (
echo %%x 
set /p a=<C:\Users\amirhosssein\Desktop\airfoil\batch\JOU\attack_%%x.txt 
%a% 
powershell -Command "(gc 1.dat) -replace 'airfoilmesh', 'airfoilmesh_%%x' - 
replace 'angle=5','angle=%a%' | Out-File Okjou%%x.jou" 
) 

ともうまく機能し、それらのこの

cd "C:\Users\amirhosssein\Desktop\airfoil\batch\JOU" 
for /l %%x in (1, 1, 100) do (
echo %%x 
powershell -command "$amir=Get-Content attack_%%x.txt" 
powershell -command "Write-Output amir" 
powershell -Command "(gc 1.dat) -replace 'airfoilmesh', 'airfoilmesh_%%x' - 
replace 'angle=5','angle=%amir%' | Out-File Okjou%%x.jou" 
) 

非。 (空)

+0

プロセス全体をPowerShellに変換することを強くお勧めします。 –

+0

変数が(ある時点で)55(たとえば、 - angle = 55)になる可能性がありますか、言い換えれば、その値に1より多くの5がある可能性がありますか? – codemaker

答えて

0

前述のように、PowerShellですべてのことを行うのは良い考えです。あなたのハイブリッドアプローチを使用して

Set-Location 'C:\Users\amirhosssein\Desktop\airfoil\batch\JOU' 
$f = Get-Content 1.dat 

1..100 | 
    $amir = Get-Content -Path attack_$_.txt 
    $f -replace 'airfoilmesh', "airfoilmesh_$amir" -replace 'angle=5', "angle=$amir" | 
     Out-File -FilePath "Okjou$amir.jou" -Encoding ASCII 
+0

これを再度確認してください。私は100回ではなく1回だけ '1.dat 'を読むように変更しました。 – lit

0
for /l %%x in (1, 1, 100) do (
echo %%x 
for /f "usebackq" %%a in ("C:\Users\amirhosssein\Desktop\airfoil\batch\JOU\attack_%%x.txt") do (
    powershell -Command "(gc 1.dat) -replace 'airfoilmesh', 'airfoilmesh_%%x' - 
    replace 'angle=5','angle=%%a' | Out-File Okjou%%x.jou" 
) 
) 

。あなたのコードが原因delayed expansionトラップ(SO上でこの上の多くの記事)で失敗しているので、%a%aとしてによって置き換えられるだろうと

forループの開始時に設定されていません。この置き換え、%%a

attackファイルからの値を割り当てられ、そう%%aなく、%a%angleとして使用する必要があります。ファイルパスがにスペースが含まれていない場合usebackq攻撃ファイル名は「引用さ」され、ファイルパスにスペースが含まれる場合、引用のみが必要とされる場合にのみ必要ですので、

for /f %%a in (C:\Users\amirhosssein\Desktop\airfoil\batch\JOU\attack_%%x.txt) do (

も働くだろう。

関連する問題