我想将一个批处理文件放在USB闪存盘上,我可以插入并运行批处理。我希望批处理能够检测到已分配给USB闪存驱动器的驱动器号,然后打开命令提示符并将目录更改为USB闪存驱动器的驱动器号,然后在cmd提示符中键入命令字符串并输入CR执行命令。
我甚至不知道从哪里开始。我已经搜索了cmd批次相关的主题,但是在将其插入PC后,实际检测到已经分配了USB闪存驱动器的驱动器盘符没有任何运气。
非常感谢任何帮助。谢谢。
答案 0 :(得分:2)
这将告诉您分配的驱动器号
@echo off
setlocal
set wmi='wmic logicaldisk where "volumeserialnumber='32A78F3B'" get caption'
for /f "skip=1 delims=" %%A in (%wmi%) do (
for /f "tokens=1 delims=:" %%B in ("%%A") do (set drive=%%B)
)
echo %drive%
要获取卷序列号,请键入
vol [drive letter of flashdrive:]
但是,如果从USB驱动器运行批处理文件,则所有这些都不是必需的。只需插入
即可cd /d %~dp0
在批处理文件的顶部,它将更改为运行批处理文件的目录。从那里只需添加您的代码。
您是否希望在插入USB驱动器时自动运行批处理文件?你的问题在这一点上并不清楚。
答案 1 :(得分:0)
我编写了一个名为 USBMON 的实用程序,当您运行脚本时,它会获取所有已连接驱动器的列表,从列表中排除cd-roms和hdd,然后脚本开始监视等待用自由字母插入新的USB驱动器,然后将插入的USB中的所有文件复制到文件夹中。
您可以执行propper更改而不是复制文件做其他事情,如打开CMD窗口。
PS:变量名称是英文的,但注释行,回声和信息都是西班牙语,但我认为很容易理解,你也可以使用GoogleTranslate。
@Echo OFF
Title USB MON v0.3
REM By Elektro H@cker
Setlocal enabledelayedexpansion
Color 07
:: :: :: :: :: :: :: ::
:: ::
:: CONFIGURACIÓN ::
:: ::
:: :: :: :: :: :: :: ::
::
::
:: Directorio de inicio
Set "DIR=%~d0"
::
:: Directorio del log
Set "LOGFILE=.\USBMON.log"
::
:: Letras a monitorizar
Set "DRIVES= B C D E F G H I J K L M N O P Q R S T U V W X Y Z "
::
:: Letras hexadecimales (NO TOCAR)
Set "DRIVES_HEX=A:1 B:2 C:4 D:8 E:16 F:32 G:64 H:128 I:256 J:512 K:1024 L:2048 M:4096 N:8192 O:16384 P:32768 Q:65536 R:131072 S:262144 T:524288 U:1048576 V:2097152 W:4194304 X:8388608 Y:16777216 Z:33554432"
::
:: Ocultar unidades vacías en "MI PC" (ACTIVAR / DESACTIVAR)
Set "HideDrivesWithNoMedia=ACTIVAR"
::
:: Ocultar la unidad de inicio de USB MON en "MI PC" (ACTIVAR / DESACTIVAR)
Set "HideUSBMONDrive=DESACTIVAR"
::
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
REM Inicio del LOG
Call :Logo
Call :Write_Log >NUL
Call :Write_Log -------------------- >NUL
Call :Write_Log Iniciando USB MON... >NUL
Call :Write_Log -------------------- >NUL
Call :Write_Log >NUL
REM Ocultar unidades vacías en "MI PC"
REG Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" >NUL 2>&1 && (
FOR /F "Tokens=3 Delims= " %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" 2^>NUL') do (
Set "Value=%%a"
)) || (Set "Value=0x1")
IF /I "%HideDrivesWithNoMedia%" EQU "ACTIVAR" (
IF /I NOT "%Value%" EQU "0x0" (
Call :Write_Log [+] Ocultando las unidades va´c¡as en MI PC...
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" /T "REG_DWORD" /D "0" /F >NUL
) ELSE (
Set "HideDrivesWithNoMedia="
)
)
REM Ocultar la unidad de inicio de USB MON
IF /I "%HideUSBMONDrive%" EQU "ACTIVAR" (
REG QUERY "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "ShowDrive_%DIR::=%" >NUL 2>&1 && (SET "HideUSBMONDrive=") || (
Call :Write_Log [+] Ocultando la unidad de USB MON en MI PC [%DIR%]...
FOR %%# in (%DRIVES_HEX%) do (
Echo %%# | FIND "%DIR%" >NUL && (
Call SET "DIR_HEX=%%#"
CALL REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /V "NoDrives" /T "REG_DWORD" /D "%%DIR_HEX:~2%%" /F >NUL
)
)
)
)
REM Reinicia el proceso explorer.exe
Echo " %HideDrivesWithNoMedia% , %HideUSBMONDrive% " | FINDSTR /I "\<ACTIVAR\>" >NUL && (
START /W Taskkill /F /IM "explorer.exe" >NUL
START /B explorer.exe
Timeout /T 5 2>NUL || (Ping -n 5 localhost >NUL)
)
REM Para revertir los cambios para "Ocultar unidades vacías en "MI PC"" en el próximo reinicio del sistema
IF /I NOT "%Value%" EQU "0x0" (REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "ShowDrivesWithNoMedia" /D "CMD /C REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" /T "REG_DWORD" /D "1" /F >NUL" /F >NUL)
REM Para revertir los cambios para "Ocultar la unidad de inicio de USB MON" en el próximo reinicio del sistema
IF /I "%HideUSBMONDrive%" EQU "ACTIVAR" (REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "ShowDrive_%DIR::=%" /D "CMD /C REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /V "NoDrives" /F >NUL" /F >NUL)
REM Inicia el servicio de Disco Virtual para poder usar Diskpart
:SERVICE
Call :Logo
SC query "VDS" | FIND /I "PENDING" >NUL && (
Call :Write_Log Hay una detenci£n pendiente del servicio de Disco virtual.
Call :Write_Log Esperando a que el servicio pueda reanudarse para continuar...
Timeout /T 5 2>NUL || (Ping -n 5 localhost >NUL)
Goto :Service
)
SC query "VDS" | FIND /I "STOPPED" >NUL && (
Call :Write_Log El servicio de Disco virtual est… detenido.
Call :Write_Log Iniciando el servicio...
sc config "VDS" start= "demand" >NUL 2>&1
sc start "VDS" >NUL 2>&1 || (
Call :Write_Log
Call :Write_Log * ERROR CRÖTICO *
Call :Write_Log No se pudo iniciar el servicio de Disco virtual, Compruebe sus permisos de usuario.
Call :Write_Log Terminando el proceso...
Exit /B 1
)
) & (Call :Write_Log El servicio de Disco virtual se ha iniciado.)
REM Parámetros
IF "%~1" EQU "/?" (Goto :command_help)
IF /I "%~1" EQU "-ayuda" (Goto :extended_help)
IF /I "%~1" EQU "-instalar" (Goto :install)
IF /I "%~1" EQU "-test" (Goto :test)
IF /I NOT "%~1" EQU "" (Call :Logo & Echo: Par…metro desconocido: %1 & Exit /B 1)
REM Elimina archivos temporales de una sesión anterior
DEL /Q "%WINDIR%\Temp\USBMON*" 2>NUL
REM Elimina los discos fijos para la monitorizaci£n
For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart') DO (Set "DRIVES=!DRIVES: %%# = !")
REM Elimina los dispositivos de DVD-ROM para la monitorizaci£n
For %%# in (%DRIVES%) DO (fsutil fsinfo drivetype %%#: | FIND /I "ROM" >NUL && (Set "DRIVES=!DRIVES: %%# = !"))
REM Monitoreo y auto-copiado
:MONITOR
Call :Logo
Echo Unidad de origen: [%DIR%]
Call :Write_Log Monitorizando unidades:!DRIVES!
Echo+ & Call :Write_Log >NUL
For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart') DO (
Echo "%DRIVES%" | FIND /I "%%#" >NUL && (
For /F "Tokens=7,* delims= " %%A in ('Vol %%#: ^| FIND /I " %%# "') Do (
IF "%%B" EQU "tiene etiqueta." (Set "LBL=Sin etiqueta") ELSE (Set "LBL=%%B")
Call :Write_Log Hay un dispositivo conectado en la unidad [%%#:] con etiqueta "!LBL!"
)
Call :Write_Log [+] Buscando archivos....
DIR /B /A "%%#:\*" >NUL 2>&1 && (
Call :Write_Log [+] Copiando archivos de la unidad [%%#:] a la unidad [%DIR%]
MKDIR "%WINDIR%\Temp" 2>NUL
MKDIR "%DIR%\USBMON %COMPUTERNAME: =% [%%#] !LBL!" 2>NUL
IF EXIST "%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt" (
XCOPY /A /C /E /H /J /K /O /Q /X "%%#:\*" "%DIR%\USBMON %COMPUTERNAME: =% [%%#] !LBL!\" /EXCLUDE:%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt
) ELSE (
XCOPY /A /C /E /H /J /K /O /Q /X /Y "%%#:\*" "%DIR%\USBMON %COMPUTERNAME: =% [%%#] !LBL!\"
)
DEL /Q "%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt" 2>NUL
PUSHD "%%#:\"
For /R %%a in (*) do (Echo %%a>>"%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt")
POPD
) || (
Call :Write_Log [+] La unidad est… vac¡a...
)
)
)
)
Timeout /T 10 2>NUL || (Ping -n 10 localhost >NUL)
Goto :MONITOR
:LOGO
CLS
ECHO+
ECHO+ .------.
ECHO+ _ _ ____ ____ __ __ ___ _ _ ^| from-.-----.
ECHO+ ^| ^| ^| ^|/ ___^| ^| __ ) ^| \/ ^| / _ \ ^| \ ^| ^| ^| that-^| -----^|
ECHO+ ^| ^| ^| ^|\___ \ ^| _ \ ^| ^|\/^| ^|^| ^| ^| ^|^| \^| ^| ^| -usb-^| to---^|
ECHO+ ^| ^|_^| ^| ___) ^|^| ^|_) ^| ^| ^| ^| ^|^| ^|_^| ^|^| ^|\ ^| ^| -----^| -my--^|
ECHO+ \___/ ^|____/ ^|____/ ^|_^| ^|_^| \___/ ^|_^| \_^| '------^| drive^|
ECHO+ By Elektro H@cker v0.3 '------'
ECHO+
GOTO:EOF
:WRITE_LOG
Echo %*
Call Echo [%DATE%] [%TIME: =%] %* >> "%LOGFILE%"
GOTO:EOF
:INSTALL
Call :Logo
Set "Extraibles="
For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart ^| FIND /I "xtra"') DO (Set "Extraibles=!Extraibles! %%#")
Echo Dispositivos extraibles conectados:!Extraibles! | MORE
Echo Escribe la letra del dispositivo donde se instalar… USB MON...
Set /P "DriveDest=>> "
If Not exist "%DriveDest%:" (Goto :Install) ELSE (Copy /Y %0 "%DriveDest%:\%~n0.bat" >NUL)
Call :Logo
Echo Unidad seleccionada: [%DriveDest%:] | MORE
COPY /Y "%CD%\%~n0.BAT" "%DriveDest%:\%~n0.BAT" >NUL
Choice /M "¨Quiere crear un autorun.inf?"
If "!ERRORLEVEL!" EQU "1" (
Choice /M "¨Quiere que USBMON se ejecute en modo oculto?"
If "!ERRORLEVEL!" EQU "1" (
Set "EXT=vbs"
(
Echo Set wshShell = CreateObject("WScript.Shell"^)
Echo wshShell.run """" ^& ".\%~n0.BAT" ^& """", 0
)>"%DriveDest%:\%~n0.vbs"
) ELSE (
Set "EXT=bat"
)
(
Echo [autorun]
Echo shellexecute=%~n0.!EXT!
Echo shell\open\command=%~n0.!EXT!
Echo shell\explore\command=%~n0.!EXT!
Echo shell=explore
Echo open=%~n0.!EXT!
Echo action =Ejecutar USB MON
Echo Language=
Echo ID=en
)>"%DriveDest%:\autorun.inf"
Attrib -A +S +H +R "%DriveDest%:\autorun.inf"
)
Call :Logo
Echo Gracias por utilizar USB MON :^) | MORE
Pause&Exit /B 0
:TEST
Call :Logo
Echo: Comenzando el test... | MORE
Echo: [+] Buscando alguna unidad extra¡ble en el PC...
Echo list vol | diskpart | FIND /I "xtra" >NUL || (
Echo: * ERROR CRÖTICO *
Echo: Porfavor inserta un dispositivo extra¡ble en el PC.
Exit /B 1
)
For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart ^| FIND /I "xtra"') DO (
IF "%%#:" EQU "%DIR%" (
Echo: * ERROR CRÖTICO *
Echo: No debes ejecutar USB MON desde la unidad extra¡ble en este test.
Exit /B 1
)
Echo: [+] Unidad extra¡ble encontrada [%%#:] | MORE
Call :Write_Log Iniciando un test en la unidad [%%#:] >NUL
Set "DRIVES= %%# "
MKDIR "%WINDIR%\Temp" 2>NUL
DEL /Q "%WINDIR%\Temp\USBMON_[%%#]*" 2>NUL
)
Echo: Se procede a monitorizar la unidad [%DRIVES: =%:]...
Timeout /T 10 2>NUL || (Ping -n 5 localhost >NUL)
Goto :Monitor
:COMMAND_HELP
call :Logo
Echo: /? ^^^| Muestra esta ayuda | MORE
Echo: -ayuda ^^^| Muestra la ayuda extendida | MORE
Echo: -instalar ^^^| Instala USBMON en un dispositivo extra¡ble | MORE
Echo: -test ^^^| Inicia un test en un dispositivo extra¡ble | MORE
Exit /B 0
:EXTENDED_HELP
Call :Logo
Echo - ¨Que es USB MON?
Echo ________________ | MORE
Echo: USB MON (USB Monitor) es un programa portable con el f¡n de monitorizar
Echo: los nuevos dispositivos extraibles que se conecten a un PC
Echo: y copiar autom…ticamente su contenido a la carpeta de USB MON. | MORE
Echo: USB MON no afecta a los dispositivos que ya se encuentren conectados a un PC
Echo: en el momento que se ejecuta el programa. | MORE
Echo: En pocas palabras, USB MON es un "roba USB" autom…tico. | MORE
Pause&Call :Logo
Call :Logo
Echo - ¨USB MON es compatible con todas las versiones de Windows?
Echo __________________________________________________________ | MORE
Echo: USB MON ha sido testeado £nicamente en Windows 7,
Echo: pero no deber¡a dar problemas en Windows XP y Vista. | MORE
Pause&Call :Logo
Echo - Consejos para un correcto uso de USB MON
Echo ________________________________________ | MORE
Echo: Es conveniente ejecutar USB MON sin que hayan medios extraibles conectados
Echo: en ese momento al PC, ya que esa letra de unidad quedar¡a descartada. | MORE
Echo: Es NECESARIO ocultar las unidades vac¡as en MI PC. | MORE
Pause&Call :Logo
Echo - ¨Como funciona USB MON?
Echo _______________________ | MORE
Echo: Al ejecutar USB MON se obtiene una lista de las letras de las unidades
Echo: conectadas al equipo en ese momento, esas letras se descartan
Echo: y se comienza a monitorizar el resto de letras en el equipo.
Echo: (Por eso es conveniente los consejos de uso de USB MON^) | MORE
Echo: Cuando USB MON detecta un dispositivo extraible insertado en alguna de las
Echo: letras monitorizadas, se buscan archivos en esa unidad y se copian
Echo: a la carpeta del programa, excluyendo duplicados de archivos
echo: que se hayan copiado anteriormente de esa misma unidad. | MORE
Pause&Call :Logo
Echo - ¨Como funciona las opciones de "Ocultar unidades" de USB MON?
Echo _____________________________________________________________ | MORE
Echo Ocultar unidades vac¡as en "MI PC":
Echo: Se escribe una clave en el registro para ocultar las unidades visibles
Echo: sin medios insertados. | MORE
Echo Ocultar la unidad de inicio de USB MON en "MI PC":
Echo: Se escribe una clave en el registro para ocultar la unidad desde
Echo: donde se inicia USB MON. | MORE
Echo: Los cambios efectuados se revierten en el pr¢ximo reinicio del sistema.| MORE
Echo: Si alguna de las dos opciones está activada se reiniciará el proceso del
Echo: explorer.exe, para que los cambios surgan efecto al instante. | MORE
Pause&Call :Logo
Echo - ¨Los antivirus pueden detectar USB MON?
Echo _______________________________________ | MORE
Echo: En mi £ltimo escaneo online solo lo ha detectado 1 de 42 antivirus: | MORE
Echo: DrWeb BATCH.Virus
Echo: Fecha: 2012-09-26 | MORE
Pause&Call :Logo
Echo - ¨Que es un autorun.inf?
Echo _______________________ | MORE
Echo: Un autorun es un archivo de personalizaci¢n preconfigurado para USB/CD/DVD.
Echo; Se puede personalizar el aspecto del dispositivo, y ejecutar un proceso. | MORE
Echo: Un autorun es detectado por el servicio de Reproducci£n autom…tica de windows,
Echo; La ejecuci¢n del autorun depende de que el servico est‚ habilitado en el PC. | MORE
Echo: El servicio se puede habilitar desde la herramienta "Services.MSC". | MORE
Pause&Call :Logo
Echo - ¨Para que sirve la opci¢n "-instalar" de USB MON?
Echo _________________________________________________ | MORE
Echo: Sirve para portabilizar el programa hacia una unidad extraible. | MORE
Echo: La opci¢n est… pensada para ser instalada en un pendrive, as¡, con
Echo: la ayuda de un autorun.inf, poder insertar el pendrive en otro equipo,
Echo: y monitorizar ese equipo para copiar los otros medios EXTRAIBLES a tu pendrive. | MORE
Pause&Call :Logo
Echo - ¨Para que sirve la opci¢n "-test" de USB MON?
Echo _____________________________________________ | MORE
Echo: Sirve para realizar una peque¤a prueba de monitorizaci¢n en una
Echo: unidad extra¡ble aleat¢ria de tu PC. | MORE
Echo: Es una prueba para ver si todo funciona con normalidad. | MORE
Echo: PD: El test ha de cancelarse manualmente apretando "CTRL + C" o cerrando CMD. | MORE
Pause&Call :Logo
Echo - Cuando intento instalar USB MON con el autorun.inf no me funciona, ¨Porqu‚?
Echo ___________________________________________________________________________ | MORE
Echo Windows XP/Vista:
Echo: El servicio de "Reproducci¢n autom…tica" debe estar activado en el equipo. | MORE
Echo Windows 7:
Echo: Microsoft deshabilit£ POR COMPLETO el uso de un autorun.inf en pendrives,
Echo: La £nica manera de ejecutar un autorun.inf es disponer de un pendrive,
Echo: que se haga pasar por un dispositivo de CD-ROM para auto-reproducirse. | MORE
Echo: PD: Inf¢rmate en internet sobre el modelo de pendrive antes de adquirirlo. | MORE
Pause&Call :Logo
Echo - ¨Donde puedo conseguir m…s programas tuyos?
Echo ___________________________________________ | MORE
Echo: No tengo ninguna web ni blog personal, pero puedes visitar www.elhacker.net | MORE
Echo: All¡ encontrar…s m…s scripts £tiles de todo tipo usando el buscador del foro,
Echo: Tambi‚n me encontrar…s moderando la secci¢n de Scripting, donde siempre estar‚
Echo: dispuesto y encantado de resolver tus dudas. | MORE
Pause&Exit/B 0