Batch que copie todas las lineas menos la ultima

Iniciado por santi810, 27 Diciembre 2013, 19:12 PM

0 Miembros y 1 Visitante están viendo este tema.

santi810

Buenos dias!

Mi problema es el siguiente:
Tengo un script para mover y ordenar las series que voy viendo.
Actualmente, por falta de fondos para comprar un NAS, estoy compartiendo los archivos desde mi ordenador de mesa prar verlos desde el portatil.

No tengo muy claro como se entra en la consola de mi ordenador remotamente, cosa que pienso investigar cuando tenga un poco de tiempo (si quereis aportar algo sobre este tema tambien estaria bien), por lo que me cree un script que crea otro script algo asi:

if exist %1 echo call mover %1 >> 0_ejecutar.bat
if exist %2 echo call mover %2 >> 0_ejecutar.bat
if exist %3 echo call mover %3 >> 0_ejecutar.bat
if exist %4 echo call mover %4 >> 0_ejecutar.bat
if exist %5 echo call mover %5 >> 0_ejecutar.bat




El tema es que quiero que ese script que se crea (el "ejecutar.bat") se borre solo!
Ya prove anteriormente que con un ren 0_ejecutar.bat funciona perfectamente aunque se este ejecutando, (vamos, que se autodestruye)

Con meter un echo rm 0_ejecutar.bat seria suficiente pero si meto en varios procesos la lista que archivos que quiero mover  se repetirian lineas con ese  codigo y se borraria antes de acabar!

Por eso quiero añadir una sección para que no me copie la ultima linea.


PD: Se me acaba de ocurrir que si borro las lineas duplicadas antes de ejecutarlo soluciono el problema pero si me ayudais con lo que propongo arriba tambien estaria bien! Gracias.

Eleкtro

#1
¿A que lineas duplicadas te refieres?.

El comando REN / RENAME sirve para renombrar un archivo, no para eliminarlo.
El comando ECHO sirve para imprimir un eco en la salida de la CMD, no para eliminar un archivo.

Debes usar el comando DEL para eliminar un archivo.

Si intentas eliminar un script que se está procesando sin dejar que se procesen todas las instrucciones de ese script ...no se procesarán las demás instrucciones porque no existirá el archivo que las contenga.

Creo que lo que intentas hacer sería esto...:

Código (dos) [Seleccionar]
@Echo OFF

(

If Exist "%~1" (Echo Call :mover "%%~1")
If Exist "%~2" (Echo Call :mover "%%~2")
If Exist "%~3" (Echo Call :mover "%%~3")
If Exist "%~4" (Echo Call :mover "%%~4")
If Exist "%~5" (Echo Call :mover "%%~5")
Echo Del /Q "%%~f0"

) > "%TEMP%\0_ejecutar.bat"

Pause&Exit


Saludos