Я часами работал над командой, чтобы перебрать подпапки и найти то, что вы искали, но он возвращает это:
Поиск: Текстовый Doc.txt
C: \ Users \ Tyler \ Desktop \ "Text Doc.txt"
Поиск закончен!
Кавычки вокруг «Text Doc.txt» меня раздражали, поэтому я попытался удалить их обычным образом (set path =% path: "=%). Теперь я получаю странную ошибку, для которой не могу найти решение:
\ ATI был неожиданным в это время.
Вот содержимое командного файла:
@echo off
set search=%*
if not [%1] == [] (
echo(
echo Searching for: %search%
echo(
for /r %cd% %%f in ("%search%") do (
if exist %%f (
set path=%%f
set path=%path:"=%
echo %path%
echo(
)
)
echo Search finished!
)
Есть идеи, как это решить?
Ответы:
Во-первых, не меняйте переменную PATH . Кроме того, избегайте изменения дополнительных переменных среды Windows , их изменение может вызвать проблемы.
FOR /R
Проход по файлам (подпапки Recurse) : в отличие от некоторых других вариантовFOR
команды, вы должны включить подстановочный знак (*
или?
) в 'set', чтобы получить согласованные результаты (сFOR /R [[drive:]path] %%parameter IN (set) DO command
синтаксическим шаблоном).Ваш скрипт может быть следующим, если его нужно запустить
895551.bat "Text Doc.txt"
(с кавычками в имени файла):Если должен быть запущен без имени файла, окружающего кавычки:
895551.bat Text Doc.txt
тогда ваш скрипт может запуститься следующим образом:Обязательное чтение:
Выход:
источник