2016-04-08 6 views
0

私はここで固執しています。 私の最終的なプロジェクトでは、新しい顧客システムの設定手順を変更したいと考えています。正確にするには、 "すべて"を行うバッチを開始します。バッチ - ファイルを開き、行/単語を変更して* .xmlとして保存します。

:NameNAMESPACE 
echo Whats the Namespace? 
set /p NAMESPACE=Name Namespace: 
echo Is %NAMESPACE% correct? (Y)es/(N)o 
set /P p=Please choose: 
if /i "%wahl%"=="Y" goto:CreateFolder 
if /i "%wahl%"=="N" goto:NameNAMESPACE 
echo Wrong choise! 
goto:NameNAMESPACE 

:NameHOSTNAME 
echo Whats the Hostname? 
set /p HOSTNAME=Name Hostname: 
echo Ist %HOSTNAME% correct? (Y)es/(N)o 
set /P wahl=Please choose: 
if /i "%wahl%"=="Y" goto:CreateFolder 
if /i "%wahl%"=="N" goto:NameHOSTNAME 
echo Wrong choise! 
goto:NameHOSTNAME 

私の事、あなたがそれを得る:)
問題がある、私は(* .xmlファイルを編集する必要がありますいくつかの点で: 最初にあなたのような、後で 何かを必要とされるであろういくつかのものに名前を付ける必要がありますこのファイル で最初にテキストファイルかもしれないが、XMLとして保存する必要があります) この

<?xml version="1.0" encoding="utf-8" ?> 
<root> 
    <!--Connection--> 
    <add name="V4H_CONNECTIONINFO" value="Server=HOSTNAME;ServicePort=IISPort;ConnectionPort=1972;Namespace=NAMESPACE;ServiceUser=LicenseSlot_0;ServicePassword=!cgm!;Customer=SYS"/> 
    <!--URLs--> 
    <add name="V4H_URL_CLICKONCE" value="http://HOSTNAME:8010/v4h.Downloader.application"/> 
    <add name="V4H_URL_CHANNEL" value="http://HOSTNAME:IISPort"/> 
    <add name="V4H_URL_SERVICES" value="http://HOSTNAME:IISPort/Services/ChannelServices.asmx"/> 
    <add name="V4H_URL_SILVERLIGHT" value="http://HOSTNAME:IISPort/?ConnectionInfo={0}"/> 
    <!--ASP.NET--> 
    <add name="V4H_DBCONNECTION_CHANNEL" value="HOSTNAME,1972,NAMESPACE,ChannelServices_{12:0-5},!cgm!,Pooling=false"/> 
    <add name="V4H_DEBUGMODE_CHANNEL" value="false"/> 
</root> 

のように以前設定したパラメータを変更する必要があります(ホスト名、名前空間およびポート)とhostname_namespaceとして保存されて見えます。 xml は、私はすでに私はこの作業を取得するために管理だけつのパラメータ

@echo off &setlocal 
set NAMESPACE=TEST_CH_L 

set "search=NAMESPACE" 
set "replace=%NAMESPACE%" 


set "textfile=test.txt" 
set "newfile=Output.txt" 
(for /f "delims=" %%i in (%textfile%) do (
    set "line=%%i" 
    setlocal enabledelayedexpansion 
    set "line=!line:%search%=%replace%!" 
    echo(!line! 
    endlocal 
))>"%newfile%" 
del %textfile% 
rename %newfile% %textfile% 
echo Done 
pause 

のでを変更するには、いくつかのこれらは、ここで click

または click

ここから仕事を得ることを試みましたあなたのうちの1人が私を助けてくれると思います。投稿者にはごめんなさい。

ありがとうあなたは、あなたの状況に合わせてsourcedirdestdirの設定を変更する必要があります マックス

+0

バッチファイルを引数で指定した名前を置き換えるには、原始的で古風です。これらは、他のプログラムを実行するためだけに使用されることを意図しています。必要なことをするプログラム、少なくとも部分的なものが必要です。 VBScriptとJavaScriptは、バッチファイルが行うことができるすべてのことを行うことができます。 – user34660

答えて

0
@ECHO Off 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q36505840.txt" 
SET "outfile=%destdir%\outfile.txt" 

set "NAMESPACE=TEST_CH_L" 
SET "hostname=my_host" 
SET "port=starboard" 

REM set "textfile=test.txt" 
REM set "newfile=Output.txt" 
(
for /f "usebackqdelims=" %%i in ("%filename1%") do (
set "line=%%i" 
CALL :CHANGE namespace HOSTNAME port 
) 
)>"%outfile%" 

REM del %textfile% 
REM rename %newfile% %textfile% 
echo Done 

GOTO :EOF 

:CHANGE 
set "search=%1" 
IF NOT DEFINED search GOTO output 
FOR /f "tokens=1*delims==" %%n IN ('set %search%') DO IF /i "%%n"=="%search%" SET "replace=%%o" 
CALL set "line=%%line:%search%=%replace%%%" 
SHIFT 
GOTO CHANGE 

:output 
FOR /f "tokens=1*delims==" %%n IN ('set line') DO IF /i "%%n"=="line" ECHO(%%o 
GOTO :EOF 

を進めます。

テスト用にデータが入っているq36505840.txtという名前のファイルを使用しました。

3つの変数namespacehostnameportため%

私が残してきたが、

rem MED-アウトあなたの元のコードの一部&確立固定値OUTFILE%として定義されたファイルを生成します。

バッチ置換は大文字と小文字を区別しないので、変数名を変更してソースファイルを修正することに注意してください。

は大きな驚き - 単に:CHANGE

関連する問題