2011-07-28 47 views
9

La idea es hacer clic derecho en cualquier archivo y luego seleccionar "copia de seguridad" en un menú desplegable que solo copia el archivo y agrega una fecha al final de su nombre, luego posiblemente se mueva esa copia a otra unidad.Ejecutando un script por lotes haciendo clic derecho en cualquier archivo

Me gustaría un método para ejecutar un script por lotes haciendo clic derecho en un archivo y pasando eso como argumento (sin escribirlo), o sabiendo de alguna manera que el archivo debe usarse en el script .

Principalmente para Windows XP, necesito que sea nativo ya que muchas computadoras en las que trabajo no nos pertenecen y no quiero copiar más archivos de los necesarios o confiar en algo más que los comandos estándar disponibles (dos tercios de las máquinas no tienen powershell ect)

Sé cómo puede cambiar las opciones de archivo para abrir un cmd en una ubicación de carpeta específica (abajo), y probablemente cambie esto para trabajar para 1 archivo específico escriba, pero no deseo agregar una clave para cada tipo de archivo en la máquina.

[HKEY_CLASSES_ROOT \ Folder \ shell \ 1.bat \ command] @ = "c: \ windows \ system32 \ cmd.exe \" % 1 \ ""

desde otro sitio un trabajo en torno a que casi resuelve esto para mí

jvierra - "Windows siempre ha tenido esa capacidad sin cambiar el registro

colocar un archivo de murciélago o VBS en el escritorio de arrastrar y soltar un archivo en el icono de murciélago el murciélago va a recibir... el nombre de archivo del archivo eliminado como% 1 y vbscript lo recibirá como WScript.Arguments (0).

Pruébalo. Funciona bastante bien. El murciélago o un script puede hacer nada con el archivo desde ese punto."

+0

También puede poner un acceso directo en la carpeta 'Enviar a ', luego puede hacer clic con el botón derecho en un archivo, seleccionar' Enviar a 'y elegir copia de seguridad. Eso no requeriría modificación del registro. – wimh

Respuesta

15

puede agregar su bate para el 'Enviar a' del menú. Ver http://support.microsoft.com/kb/310270

En resumen, simplemente copia el archivo .bat en el usuario SendTo carpeta.

COPY MYBACKUP.BAT "%USERPROFILE%\SendTo" 

el usuario invoca la selección de su bate de la opción de "Enviar a" del menú.

para la parametrización más sofisticada, como cambiar el texto que aparece en el menú, o el icono .. .puedes crear un enlace a tu .BAT y colocar el l tinta en la carpeta SendTo en lugar del .bat en sí

COPY "My very special backup.lnk" "%USERPROFILE%\SendTo" 

Puede que primero haga una prueba rápida. Cree un archivo BAT con este contenido y cópielo en la carpeta Sendto.

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %~dpnx0 
echo Subject is %1 %~dpnx1 
pause 

Editar: siguiendo algunas de las commments, he corregido la definición de carpeta SendTo en el comando COPY, añadiendo las cotizaciones requeridas; y he agregado un ejemplo de prueba, y corrigí la sintaxis %~dpnx

+0

No veo cómo pasaría el nombre del archivo desde allí. – daniel

+0

el Explorador pasa el nombre de archivo como el primer parámetro al archivo .bat invocado. ¿Lo has probado? ¿Qué problema has tenido? –

+0

Es difícil de explicar y difícil de buscar en Google, y por eso lo estoy preguntando. La secuencia de comandos por lotes tiene que saber qué archivo se ha hecho clic en. Entiendo que tener un .bat en el envío le permite hacer clic derecho y ejecutarlo. pero ¿cómo entra el archivo como el primer parámetro después de eso? – daniel

1

El ejemplo @PA (copiado justo debajo para facilitar la visualización) está desactivado por un pelo.

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %dpnx0 
echo Subject is %1 %dpnx1 
pause 

no tengo la reputación suficiente para responder a @PA. Olvidó incluir el ~ en la variable.Esta Q & A me ayudó mucho, así que espero que esto ayude a alguien más. Gracias @ Daniel y @PA

corregido ejemplo de prueba por debajo de Daniel

@echo off 
echo Current Directory is %cd% 
echo Current batch run is %0 %~dpnx0 
echo Subject is %1 %~dpnx1 
pause 

Si desea simplemente echo el nombre del archivo sin la ruta y luego se usaría% ~ n1

ejemplo:

echo Subject is %~n1 
Cuestiones relacionadas