2013-03-13 3 views
0

Я пытаюсь сделать программу Minecraft, которая найдет и сбросит ваш minecraft. Проблема в том, что я выпущу его, и у всех будут разные имена пользователей, и не у всех из них будет Vista + с пользователями под C:\Users\Username. Некоторые будут иметь его под C:\Documents and Settings\Username или что-то в этом роде.Как найти скрытую папку с помощью пакета?

Это код, который у меня уже есть.

@Echo off 
set UserProfile = Jackson 
set Find = Desktop 
pause 
FOR /D %%Find in ("C:\Users\%UserProfile%\") DO pause 

Это то, что у меня есть. Очевидно, что это неправильно, но мне нужна помощь. Да, я понимаю, что выше это должно быть set /p UserProfile = Insert username here, если я собираюсь пройти этот маршрут, но у меня есть его для тестирования. Я просто не могу получить FOR для работы. Использую ли я неправильную команду? Я пытался исследовать его, но я не могу найти рабочее решение. Спасибо за помощь в продвижении!

P.S. Если вы не знаете, какую скрытую папку я буду искать C:\Users\Username\Appdata\Roaming\.minecraft

У меня есть эта постоянная проблема с выполнением FOR. В пакетном режиме даже при паузе он закрывает окно cmd. Если я делаю это вручную без пакетного скрипта (в cmd.exe), тогда он говорит %%Find was unexpected at this time. Как я могу это исправить?

+0

Причина, по которой другие скрипты пользователей терпят неудачу, заключается в том, что они предполагают, что вы помещаете их в пакетный скрипт, а не в командную строку. Просто удалите один из процентных знаков. –

+0

@ProfPickle, можете ли вы отправить код. Я новичок с новыми партиями. И я помещаю его в пакетный скрипт, как вы можете видеть по строкам кода, и я говорю: «Я собираюсь выпустить его, и у всех будут разные имена пользователей» – JacksonML

+0

Если вы выполняете команду 'FOR' DIRECTLY из prompt, то правильный синтаксис - это 'для ...% v in ...' Если вы выполняете 'FOR' как строку ФАЙЛА BATCH, синтаксис' for ... %% v in ... ' , Любая ссылка на метапеременная (переменная управления контуром - 'v' в этом случае) должна следовать этому правилу - из приглашения, одного'% 'и внутри пакетного файла, %%'. Метапеременная может быть только ОДНОМ ПИСЬЕМ и СЛУЧАЙНО. – Magoo

ответ

3

На самом деле, все, что вам нужно, это переменная %APPDATA% среды. Он будет работать на XP, Vista, 7 или 8 (и я полагаю, вероятно, Windows NT и 2000). %APPDATA%\.minecraft переведет на c:\users\<username>\appdata\roaming\.minecraft на Vista +, или c:\documents and settings\<username>\application data\.minecraft на XP-.

Итак, просто используйте %APPDATA%\.minecraft (возможно, укажите), где вам нужно обратиться к папке .minecraft.

См. Эту страницу на Windows Environment Variables для получения более полезных имен системных переменных.

+0

У меня есть эта постоянная проблема с выполнением FOR. В пакетном режиме даже при паузе он закрывает окно cmd. Если я делаю это вручную без командного скрипта (в cmd.exe), тогда он говорит: «%% Find был неожиданным в это время». Как я могу это исправить? – JacksonML

+0

@JacksonML: Имена переменных Loop не могут состоять из нескольких букв. Это должен быть префикс ('%%' в командном файле и '%' в командной строке), за которым следует ровно один символ (обычно буква, но цифры также могут использоваться, а также некоторые не-буквенно-цифровые символы). –

+0

@JacksonML - Какой французский, тост? Как '% APPDATA%' не решает все ваши проблемы? Почему вы все еще настаиваете на использовании цикла 'for'? Вы говорите, что папка minecraft может быть где-то иным, чем '% APPDATA% \. Minecraft', или вы пытаетесь найти подкаталог внутри? Если да, то какой подкаталог? – rojo

0

Попробуйте

FOR /D %%F in ('dir/a C:\Users\%UserProfile%\') DO echo %%F 
+0

Такая же проблема размещена в ответе выше – JacksonML

+0

Поцарапайте этот комментарий, он не позволит мне удалить его. –

+0

Как написано, это не сработает. Вероятно, вы хотели изменить 'FOR/D' на' FOR/F'. Еще одна проблема - команда 'dir'. Прежде всего, переключатель должен быть '/ ad', а не просто'/a'. Кроме того, было бы лучше добавить переключатель '/ b', чтобы' dir' возвращал только имена.Наконец, переменная среды USERPROFILE' содержит полный путь к каталогу пользователя. Поэтому вы не можете просто добавить его к другому пути. (Фактически, вы могли бы просто использовать его самостоятельно.) –

0
for /f "delims=" %%i in (' dir /b /ah /ad /s \.minecraft ') do set target=%%i 
echo %target% 

где \ это каталог, в котором вы начали поиск.

+0

Та же проблема, что и выше, но она говорит, что '%% i был неожиданным в это время. – JacksonML

0

Спасибо, ребята, за все ваши ответы! Я понял (спасибо @AndriyM), что вы можете использовать только 1 письмо после %%. Это была моя проблема, поскольку я пытался сделать %% Find, и мне пришлось делать %% F и изменять переменные. Спасибо, парни за помощь!

Смежные вопросы