Как я нахожу полный путь к приложению в сценарии пакетной обработки

Я буду идти вразрез с мелкой частицей и говорить, что, в то время как идеально Вы стали бы опытными в JavaScript прежде изучение jQuery, можно, вероятно, сделать большие успехи на обеих передних сторонах путем вскакивания и кодирования пользования библиотекой.

Одни из преимуществ jQuery - то, что это помогает сделать определенные вещи в браузере. Можно ли получить большую реальную работу, сделанную путем вырезания и вставления и адаптации чужого кода, итак, почему бы не начать делать это? Когда Вы идете при обнаружении с идиомой, Вы не вполне понимаете, роете вокруг и узнаете то, что это означает или как это работает.

Со временем, Вы станете ведущим устройством и JavaScript и jQuery.

, Если у Вас есть какой-либо вид программирования фона, хорошая книга для чтения для получения Вы до скорости быстро на JavaScript - Douglas Crockford, JavaScript: Хорошие Части.

16
задан Nifle 17 September 2009 в 08:46
поделиться

3 ответа

Ответы, которые я получил от других, работали (но медленно или использовали дополнительные файлы) и работали для любого exe, но не совсем соответствовали моим потребностям.

Поскольку я хотел найти конкретный exe Я пошел искать в реестре, используя вместо этого REG QUERY . Я нашел ключ, содержащий данные, которые я хотел найти, и извлек их.

Результат быстрый, содержит несколько строк кода, но не очень красив и не может использоваться повторно.

Краткий пример:

@ECHO off
SETLOCAL
set found=
FOR /F "tokens=1-3 delims= " %%a IN ('REG QUERY "HKEY_CLASSES_ROOT\Applications\ISTool.exe\shell\OpenWithISTool\command"') DO (
 set found=%%c
)

for /f "tokens=1-2" %%a in ("%found%") do (
 set my_exe=%%a
)
echo %my_exe%
ENDLOCAL

В результате получается "C: \ Program \ ISTool \ ISTool.exe" (в кавычках)
Примечание : после delims = выше следует табуляция -char

0
ответ дан 30 November 2019 в 16:36
поделиться

Это самое близкое, что я нашел. Одним из недостатков является то, что он работает только для одного диска за одно выполнение, но это можно сделать более гибким. Другой - вывод, который всегда содержит // между путем и именем файла. Но для каждого определения это допустимый путь.

@ECHO OFF

SET filename=autoexec.bat

FOR /R C:\ %%a IN (\) DO (
   IF EXIST "%%a\%filename%" (

      SET fullpath=%%a%filename%
      GOTO break
   )
)
:break

ECHO %fullpath%

Доставит: C: \\ autoexec.bat

РЕДАКТИРОВАТЬ:

Для объяснения, цикл for выполняет итерацию по всем каталогам, начиная с заданного пути (C: \) и проверьте, существует ли имя файла в этом каталоге. Если это так, обе переменные объединяются и сохраняются в% fullpath%, а цикл завершается скачком.

1
ответ дан 30 November 2019 в 16:36
поделиться

Вы можете найти исполняемый файл по пути (или другой строке, похожей на путь, если необходимо):

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

Подробности можно найти в конце текста справки для "для « команда, « для /? », но сводка такова:

%~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.

Модификаторы можно комбинировать для получения составных результатов:

%~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.

Если ваш исполняемый файл не находится на пути (согласно ваше редактирование), лучше всего использовать формат bare / subdirectory dir , который сделает это за вас. Из корневого каталога:

dir /b /s ISTool.exe

доставит вам все файлы на этом диске с этим именем. Затем вам просто нужно проанализировать вывод. Я бы предпочел использовать Cygwin "find / cygdrive -name ISTool.exe" , но это потому, что он у меня уже установлен. Вы можете этого не хотеть (или даже иметь такую ​​возможность).

Обновление:

Эта команда dir / b / s займет некоторое время, поскольку в основном выполняется поиск по всему диску. Если это проблема, вы можете периодически создавать кэшированные записи всех файлов на всех дисках с помощью cmd-файла, например:

@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

Вы можете делать это с помощью запланированных задач либо ночью (для постоянно включенного сервера), либо при загрузке ( для рабочего стола). Вы даже можете сделать сценарий более умным, чтобы делать это только раз в пару дней (у меня есть сценарий автоматического резервного копирования, который делает то же самое на поддерживаемых мной семейных машинах). Это создает список во временном файле кэша, а затем перезаписывает исходный, чтобы минимизировать время, когда файл не существует.

Затем вы можете просто использовать:

findstr \\ISTool.exe c:\files.cache

, чтобы найти все ваши файлы.

в основном поиск по всему диску. Если это проблема, вы можете периодически создавать кэшированные записи всех файлов на всех дисках с помощью cmd-файла, например:

@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

Вы можете делать это с помощью запланированных задач либо ночью (для постоянно включенного сервера), либо при загрузке ( для рабочего стола). Вы даже можете сделать сценарий более умным, чтобы делать это только раз в пару дней (у меня есть сценарий автоматического резервного копирования, который делает то же самое на поддерживаемых мной семейных машинах). Это создает список во временном файле кэша, а затем перезаписывает исходный, чтобы минимизировать время, когда файл не существует.

Затем вы можете просто использовать:

findstr \\ISTool.exe c:\files.cache

, чтобы найти все ваши файлы.

в основном поиск по всему диску. Если это проблема, вы можете периодически создавать кэшированные записи всех файлов на всех дисках с помощью cmd-файла, например:

@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

Вы можете делать это с помощью запланированных задач либо ночью (для постоянно включенного сервера), либо при загрузке ( для рабочего стола). Вы даже можете сделать сценарий более интеллектуальным, чтобы он выполнялся только раз в пару дней (у меня есть сценарий автоматического резервного копирования, который делает то же самое на поддерживаемых мной семейных машинах). Это создает список во временном файле кэша, а затем перезаписывает исходный, чтобы минимизировать время, когда файл не существует.

Затем вы можете просто использовать:

findstr \\ISTool.exe c:\files.cache

, чтобы найти все ваши файлы.

@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

Вы можете сделать это с помощью запланированных задач либо ночью (для постоянно включенного сервера), либо при загрузке (для настольного компьютера). Вы даже можете сделать сценарий более интеллектуальным, чтобы он выполнялся только раз в пару дней (у меня есть сценарий автоматического резервного копирования, который делает то же самое на поддерживаемых мной семейных машинах). Это создает список во временном файле кэша, а затем перезаписывает исходный, чтобы минимизировать время, когда файл не существует.

Затем вы можете просто использовать:

findstr \\ISTool.exe c:\files.cache

, чтобы найти все ваши файлы.

@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

Вы можете сделать это с помощью запланированных задач либо ночью (для постоянно включенного сервера), либо при загрузке (для настольного компьютера). Вы даже можете сделать сценарий более интеллектуальным, чтобы он выполнялся только раз в пару дней (у меня есть сценарий автоматического резервного копирования, который делает то же самое на поддерживаемых мной семейных машинах). Это создает список во временном файле кэша, а затем перезаписывает исходный, чтобы минимизировать время, когда файл не существует.

Затем вы можете просто использовать:

findstr \\ISTool.exe c:\files.cache

, чтобы найти все ваши файлы.

29
ответ дан 30 November 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: