我想将批处理文件放在 USB 闪存驱动器上,我可以插入并运行批处理。我希望批处理检测已分配给 USB 闪存驱动器的驱动器号,然后打开命令提示符并将目录更改为 USB 闪存驱动器的驱动器号,然后在 cmd 提示符中键入命令字符串并输入一个 CR 来执行命令。
我什至不知道从哪里开始。我已经搜索了与 cmd 批处理相关的主题,但在将 USB 闪存驱动器插入 PC 后实际检测到分配了 USB 闪存驱动器的驱动器号方面没有任何运气。
任何帮助将非常感激。谢谢你。
我想将批处理文件放在 USB 闪存驱动器上,我可以插入并运行批处理。我希望批处理检测已分配给 USB 闪存驱动器的驱动器号,然后打开命令提示符并将目录更改为 USB 闪存驱动器的驱动器号,然后在 cmd 提示符中键入命令字符串并输入一个 CR 来执行命令。
我什至不知道从哪里开始。我已经搜索了与 cmd 批处理相关的主题,但在将 USB 闪存驱动器插入 PC 后实际检测到分配了 USB 闪存驱动器的驱动器号方面没有任何运气。
任何帮助将非常感激。谢谢你。
这将告诉您分配的驱动器号
@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 驱动器时自动运行批处理文件吗?你的问题在这一点上不清楚。
我编写了一个名为USBMON的实用程序,当您运行脚本时,它会获取所有连接驱动器的列表,从列表中排除 cd-rom 和 hdd,然后脚本开始监视等待在免费中插入新的 USB 驱动器字母,然后将所有文件从插入的 USB 复制到一个文件夹。
您可以对属性进行更改,而不是复制文件,而是打开 CMD 窗口。
PS:变量名是英文的,但注释行、回声和信息是西班牙文,但我认为很容易理解,你也可以使用谷歌翻译。
@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