Ayuda en batch

Iniciado por Virtual_Traveler_0, 6 Mayo 2015, 16:38 PM

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

Virtual_Traveler_0

Como hago para que al pegar un archivo con el comando
xcopy C:\Users\Usuario\Pictures H:\Imagenes /A /E /K
y no aparezca si deseo reemplazar los archivos existentes, digo no se podrá hacer un if exist que haga un excepción de los archivos en conflicto existentes?
el proyecto es el siguiente:
Cada vez que conecto mi pendrive sincronice mis imagenes del ordenador con la del pendrive y si lo enchufo en otra pc mía tambien haga lo mismo asi tengo todas las mismas imagenes en todas mis pc:
el autorun.inf tiene lo siguiente:
[Autorun]
Label=User
Icon=Icono.ico
Open= start.vbs
shellexecute= start.vbs
UseAutoPlay=1
action=Abrir USB

y el start.vbs es para que se ejecute en segundo plano contiene lo siguiente:
set objshell = createobject("wscript.shell")
objshell.run "Sincronizar.bat",vbhide

Luego el bat tiene lo siguiente:
echo @off
if EXIST (H:\ goto A)else( goto B)
:A
xcopy C:\Users\user\Pictures H:\Imagenes /A /E /K
xcopy H:\Imagenes C:\Users\user\Pictures /A /E /K
end
:B
xcopy C:\Users\user\Pictures G:\Imagenes /A /E /K
xcopy G:\Imagenes C:\Users\user\Pictures /A /E /K

end

espero sus respuestas desde ya gracias :D




Eleкtro

#1
Citarif EXIST (H:\ goto A)else( goto B)

Trata de RESPETAR la sintaxis del lenguaje, esa condicional es completamente erronea, nunca se va a evaluar correctamente.

Utiliza debidamente las agrupaciones, y el margen necesairo de espacios en blanco entre agrupaciones:
If Exist "H:\" (GoTo :A) Else (GoTo :B)




Citarxcopy C:\Users\user\...

Los argumentos debes encerrarlos usando comillas dobles, de lo contrario te dará error de sintaxis si encontrase espacios en blanco (por ejemplo si el nombre de usuario contuviese espacios).

XCopy.exe "...\Origen\" "...\Destino\"




Citarend

El comando "end" no existe en Batch, te dará un error de sintaxis por lo que terminará la ejecución del script en ese preciso momento devolviendo un código de salida inesperado.

En su lugar, utiliza el comando Exit:
Exit /B 0




CitarComo hago para que al pegar un archivo con el comando
xcopy C:\Users\Usuario\Pictures H:\Imagenes /A /E /K
y no aparezca si deseo reemplazar los archivos existentes, digo no se podrá hacer un if exist que haga un excepción de los archivos en conflicto existentes?

Supriimir el aviso de sobreescritura es muy sencillo, solo tienes que añadir un parámetro, lee la ayuda del comando, en consola:
XCopy.exe /?

Saludos!