-> Programación BATCH Avanzada. (nuevo)

Iniciado por sirdarckcat, 24 Julio 2006, 10:01 AM

0 Miembros y 2 Visitantes están viendo este tema.

xassiz~

No es que vaya peor, es que te comiste un porcentaje:
Código (dos,3) [Seleccionar]

   for %%a in (*.doc) do
   (
       set /a archivo = "%a"
       set /a contador = !contador! + 1
       echo !contador! !archivo! >>reporte.txt
       7z.exe a -t7z "%%~na".7z "%%~na".doc -mx9 -bd>nul
       REM otros comandos . . .
   )

FJPPitta

Si me equivoque en la sentencia pero con:

set file=%%~na

puedo asignar el nombre de un archivo a la variable file utilizando doble porcentaje, y para guardarlo en un txt solo le puse

   echo !contador! : !file! >>reporte.txt

asi le pongo un contador y el nombre del archivo y los voy guardando :D
Saludos
FJPPittta

FJPPitta

Tengo una duda, de una lista de archivos es posible cuyos nombres en ocasiones se incluyen caracteres como un ! e posible localizar dichos archivos y renombrarlos cambiando el ! por un espacio o cualquier otra cosa?
Saludos
FJPPittta

xassiz~

Código (dos) [Seleccionar]
@echo off

set "archivo=test!.txt"

set/a contador=0

:loop
call set letra=%%archivo:~%contador%,1%%
if "%letra%"=="!" (set boolean=true)
set/a contador+=1
if defined letra (goto:loop)

if "%boolean%"=="true" (echo:rename %archivo% %archivo:!=%) else (echo:No tiene !)

>nul pause
exit

::)

Edo_Degauss

Saludos a todo tengo una duda en cuanto a programacion en BATCH

resulta que tengo que hacer una rutina que la tengo lista pero no se como terminar lo ultimo que me queda.

La 1era parte consiste en que el batch hace un BACK UP de la base de datos y me la comprime ..

La 2da parte la sube a un FTP

Pero necesito que todo esto se haga en uno solo , osea termina de comprimir el Backup y lo empieze a subir al FTP

el problema que tengo es que despues de que hace el back up y empieza a comprimir se ejecuta y empieza a subirse, por ende error por que todavia no termina la compresion y se ejecuta la uplodeada..

el codigo que tengo es este


back up - rar

set FECHA= %date%
set FECHA=%FECHA:/=%

SQLCMD -SEDO\SQL2K8CS -E -i"C:\Users\---\Desktop\backup.sql" >> "C:\logs\Backup%FECHA%.log"

Start winrar a -dr -ep1 "BK.rar" C:\test\*.*


Sube al FTP

set FECHA= %date%
set FECHA=%FECHA:/=%

ftp -s:batch-ftp.txt ftp.acquire.com.au >>  "C:\logs\details_upload%FECHA%.log"

cd C:\Documents and Settings\ecabello\Desktop
del "BK.rar"


habia intentado hacerlo todo desde un BAT y consegui esto

call c:\Users\--\Desktop\backup.bat



:start
PING -a 127.0.0.1 >nul

:batch2
call c:\Users\--\Desktop\batch.bat


if exist "C:\test\BK.bak"

(GOTO start)

if not exist "C:\test\BK.bak"

(GOTO batch2)


Pero todavia no termina el rar y ya se ejecuta para subirlo..

mis preguntas son

Hay alguna forma de que se detecte cuando termine el rar?
o de como solucionaro..

Agradeceria mucho su ayuda desde ya..

gracias de antemano







Germaniac

Intenta usando Start con el parametro /wait
Cambia
Start winrar a -dr -ep1 "BK.rar" C:\test\*.*
por
Start /wait winrar a -dr -ep1 "BK.rar" C:\test\*.*


aaronezpino

#156
Hola

Necesito programar un archivo bat que me haga lo sig...
Preguntar una cadena de hora (cuatro digitos, formato HHMM ) , una vez hecho esto, que renombre "archivo1" a "nombre1HHMM", "archivo2 " a "nombre2HHMM".

Usé el sig código...

Código (dos) [Seleccionar]
@echo off
set /p HHMM = Escribe la hora formato HHMM
ren C:\archivo1.png %nombre1HHMM%.png
pause



ya lo intenté con los sig cambios en el renglón 3.
%nombre1HHMM%.png
nombre1HHMM.png
nombre1%HHMM%.png
%nombre1HHMM.png%


y no funciona.

¿Alguien sabe como le puedo hacer?

Saludos

leogtz

Primero debes decirnos de donde sacaremos los archivos "archivo1", "archivo2", etc.

¿Los da el usuario con set /p, los cogemos del directorio actual, o simplemente están seteados en el
código?

Otra cosa, los código deben ir con su correspondiente etiqueta, de no ser así tu mensaje será eliminado.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

DameBanda

Hola TxShack

La respuesta a porque no fnciona es facil:
Porque si te fijas en tu code pones
if %clave%==fark (goto bien) else goto :menu
me parece que para que funcionase bastaría con quitarle los 2 puntos a :menu y meterlo entre paréntesis. Para que hagas copy-paste te dejo el code de forma que funcione.
Lo que no tengo ni idea es de si se puede bloquear la X...

@echo off
cd c:\
echo @echo off > pass.bat
echo :menu >> pass.bat
echo echo. >> pass.bat
echo INTRODUCIR CLAVE >> pass.bat
echo echo. >> pass.bat
echo set /p clave= >> pass.bat
echo if %clave%==fark (goto bien) else goto :menu >> pass.bat
echo :bien >> pass.bat
echo cls >> pass.bat
echo echo. >> pass.bat
echo echo ACCESO VALIDADO >> pass.bat
echo echo. >> pass.bat
echo pause >> pass.bat
echo exit >> pass.bat
reg add HKLM\SOFTWARE\MICROSOFT\Windows\CurrentVersion\Run /v pass /d C:\pass.bat
start c:\pass.bat
exit


Creo que así te funcionaría aunque seria mejor crear 2 archivos puesto que al introducir ciertos caracteres en un batch manda error...  :-\
"Amarillo, pensó" Douglas Adams




[img]http:/

leogtz

Los puntos no afectan, lo que afecta es el uso o no de los paréntesis, usenlos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com