Buenas a tod@s,
Tengo un problema, he de modificar un archivo xml del filezilla en muchos equipos y estoy atascado a la hora de hacer el script, porque necesito cambiar el nombre del usuario y el la Pass están en rojo, el problema viene cuando se modifica el nombre del usuario también se modifica el del host porque ambos contienen la misma palabra contenidos os adjunto la parte del código del xml
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <FileZilla3> <Servers> <Folder expanded="1">Redaccion <Server> <Host>ftp-contenidos.int</Host> <Port>21</Port> <Protocol>0</Protocol> <Type>0</Type> <User>contenidos</User> <Pass>iW5kexal5M</Pass> <Logontype>1</Logontype> <TimezoneOffset>0</TimezoneOffset> <PasvMode>MODE_DEFAULT</PasvMode> <MaximumMultipleConnections>0</MaximumMultipleConnections> <EncodingType>Auto</EncodingType> <BypassProxy>0</BypassProxy> <Name>Contenidos-interno</Name> <Comments></Comments> <LocalDir></LocalDir> <RemoteDir></RemoteDir> <SyncBrowsing>0</SyncBrowsing>Contenidos-interno </Server> <Server> <Host>ftp-interno.int</Host> <Port>21</Port> <Protocol>0</Protocol> <Type>0</Type> <User>sdl</User> <Pass>kJdm43!</Pass> <Logontype>1</Logontype> <TimezoneOffset>0</TimezoneOffset> <PasvMode>MODE_DEFAULT</PasvMode> <MaximumMultipleConnections>0</MaximumMultipleConnections> <EncodingType>Auto</EncodingType> <BypassProxy>0</BypassProxy> <Name>ftp-interno</Name> <Comments></Comments> <LocalDir></LocalDir> <RemoteDir></RemoteDir> <SyncBrowsing>0</SyncBrowsing>ftp-interno </Server> </Folder> </Servers> </FileZilla3>
Bueno yo he conseguido lo siguiente, con este código me cambia la pass, esto si funciona aparentemente
@echo off Setlocal EnableDelayedExpansion
set HOME=\\scripts\chftp set USER=xxx.int\admin set PASS=admin
:: ojo, hay que escapar algunos caracteres, el simbolo de dólar entre ellos
set OLDPASS1=contenid0\$ set OLDPASS2=GqedVja8 set OLDPASS3=iW5kexal5M set NEWPASS=Contenido1 set TIMESTAMP=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%
taskkill /s %1 /u %USER% /p %PASS% /IM filezilla.exe /F
net use \\%1\c$ /d > nul 2>&1 net use \\%1\c$ %PASS% /user:%USER% if not %errorlevel% EQU 0 goto ERROR pushd \\%1\c$ if not %errorlevel% EQU 0 goto ERROR
set SEDEXPR1="s/%OLDPASS1%/%NEWPASS%/g" set SEDEXPR2="s/%OLDPASS2%/%NEWPASS%/g" set SEDEXPR2="s/%OLDPASS3%/%NEWPASS%/g"
for /D %%a in ("\documents and settings\*.*") do (
set INFILE="%%a\Datos de programa\FileZilla\sitemanager.xml.%TIMESTAMP%" set OUTFILE="%%a\Datos de programa\FileZilla\sitemanager.xml" set TMPFILE="%%a\Datos de programa\FileZilla\sitemanager.tmppass"
if exist !OUTFILE! ( copy /Y !OUTFILE! !INFILE! %HOME%\sed.exe !SEDEXPR1! !INFILE! >!TMPFILE! %HOME%\sed.exe !SEDEXPR2! !TMPFILE! >!OUTFILE! del !TMPFILE! ) )
popd echo HECHO goto END
:ERROR echo FALLO
:END net use \\%1\c$ /d > nul 2>&1
Esta parte es la que no funciona me modifica todo
@echo off
Setlocal EnableDelayedExpansion
set HOME=\\scripts\chftp set USER=xxx.int\admin set PASS=admin
:: ojo, hay que escapar algunos caracteres, el simbolo de dólar entre ellos. :: En el primer paso del fichero cambiamos el usuario.
set OLDUSER=contenidos set NEWUSER=informacion
set TIMESTAMP=%DATE:~-4%%DATE:~3,2%%DATE:~0,2%
taskkill /s %1 /u %USER% /p %PASS% /IM filezilla.exe /F
net use \\%1\c$ /d > nul 2>&1 net use \\%1\c$ %PASS% /user:%USER%
if not %errorlevel% EQU 0 goto ERROR pushd \\%1\c$ if not %errorlevel% EQU 0 goto ERROR
set SEDEXPR1="s/%OLDUSER%/%NEWUSER%/g" set SEDEXPR2="s/%NEWUSER%/%NEWUSER%/g"
for /D %%a in ("\documents and settings\*.*") do (
set INFILE="%%a\Datos de programa\FileZilla\sitemanager.xml.%TIMESTAMP%" set OUTFILE="%%a\Datos de programa\FileZilla\sitemanager.xml" set TMPFILE="%%a\Datos de programa\FileZilla\sitemanager.tmppass" if exist !OUTFILE! ( copy /Y !OUTFILE! !INFILE! %HOME%\sed.exe !SEDEXPR1! !INFILE! >!TMPFILE! %HOME%\sed.exe !SEDEXPR2! !TMPFILE! >!OUTFILE! del !TMPFILE! ) ) popd echo HECHO goto END
Solo necesito cambiar el user que esta en color rojo, mejor dicho no se como llegar a decirle al programa como llegar a la etiqueta user y modifique unicamente el user y deje el host como esta.
Muchas gracias
[MOD] Deberias usar las etiquetas GeSHi, para poner el código.
|