Puede localizar un archivo ejecutable en el camino (u otra cadena de ruta similar si es necesario):
c:\> for %i in (cmd.exe) do @echo. %~$PATH:i
C:\WINDOWS\system32\cmd.exe
c:\> for %i in (python.exe) do @echo. %~$PATH:i
C:\Python25\python.exe
detalles se pueden encontrar al final del texto de ayuda para el comando "for"
, "for /?"
pero el resumen es:
%~i - expands %i removing any surrounding quotes.
%~fi - expands %i to a fully qualified path name.
%~di - expands %i to a drive letter only.
%~pi - expands %i to a path only.
%~ni - expands %i to a file name only.
%~xi - expands %i to a file extension only.
%~si - expanded path contains short names only.
%~ai - expands %i to file attributes of file.
%~ti - expands %i to date/time of file.
%~zi - expands %i to size of file.
%~$P:i - searches the directories listed in the P environment variable
and expands %i to the fully qualified name of the first one found.
If the environment variable name is not defined or the file is not
found by the search, then this modifier expands to the empty string.
los modificadores se pueden combinar para obtener resultados compuestos:
%~dpi - expands %i to a drive letter and path only.
%~nxi - expands %i to a file name and extension only.
%~fsi - expands %i to a full path name with short names only.
%~dp$P:i - searches the directories listed in the P environment variable
for %i and expands to the drive letter and path of the first
one found.
%~ftzai - expands %i to a DIR like output line.
Si el ejecutable no está en el camino (como p er su edición), su mejor opción es usar el formato de subdirectorio/bare/0 de dir
que lo hará por usted. Desde el directorio raíz:
dir /b /s ISTool.exe
obtendrá todos los archivos en esa unidad con ese nombre. Entonces solo tiene que analizar la salida. Mi propia preferencia sería usar Cygwin's "find /cygdrive -name ISTool.exe"
, pero eso es porque ya lo tengo instalado. Es posible que no desee eso (o incluso tenga esa opción).
Actualización:
Eso dir /b /s
comando tardará un tiempo ya que está básicamente buscar todo el disco. Si eso es un problema que puede que desee considerar periódicamente la creación de un registro en caché de todos los archivos en todos los discos con un archivo cmd como:
@echo off
setlocal enableextensions enabledelayedexpansion
del c:\files.cache.tmp >nul: 2>nul:
for %%d in (c d e) do (
cd /d %%d:\
dir /b /s >>c:\files.cache.tmp
)
del c:\files.cache >nul: 2>nul:
move c:\files.cache.tmp c:\files.cache
endlocal
Se puede hacer esto con las tareas programadas o bien todas las noches (para siempre-en el servidor) o en el arranque (para un escritorio). Incluso podría hacer que el guión sea más inteligente para hacerlo solo cada dos o tres días (tengo un guión de copia de seguridad automatizado que hace algo similar en las máquinas familiares que apoyo). Esto crea la lista en un archivo de caché temporal y luego sobrescribe el original para garantizar que se minimice la hora en que el archivo no existe.
a continuación, puedes utilizar:
findstr \\ISTool.exe c:\files.cache
para localizar todos los archivos.
¿Podría aclarar su tarea? ¿Desea, por ejemplo, obtener "C: \ Archivos de programa \ iTunes" con "iTunes" como entrada? – Helen
Entonces, como entrada, ¿quiere dar "ISTool.exe" y no está en la ruta? Tendría que buscar todo el disco para ello. - 'dir c: \ ISTool.exe/s/b' - puede canalizar la salida a cualquier lugar, pero si el archivo aparece más de una vez, tendrá múltiples líneas para tratar, también, si el usuario tiene más de una unidad, es posible que necesite escanear todas ellas (no estoy seguro de cuál es la mejor manera de obtener todas las unidades, tal vez una consulta WMI para unidades no extraíbles ...), pero esto podría llevar años, incluso con SSD: es mejor que escanee 5 o 6 ubicaciones conocidas, incluido% ProgramFiles% \ ISTool \ y% ProgramFiles (x86)% \ ISTool, etc. – BrainSlugs83