2015-09-14 3 views
1

Я никогда не использовал пакетное программирование раньше, мой опыт работы с Java и C#, но я хотел попробовать учиться. Я пытаюсь создать скрипт, чтобы при запуске я поместил путь к каталогу, а затем программа будет проходить через каждый файл в указанной папке, сообщите мне его имя и спросите, хочу ли я его удалить. Это то, что я до сих пор:Пакетное программирование, путаница в отношении синтаксиса цикла FOR?

@ECHO off 
set /p folder="Folder Address: " 
FOR /R %folder% %%G IN (.) DO (
    set filepath=%%~dpa 
    set /p delete="Delete?: " 
    IF %delete%="Y" IF %delete%="y"(
    del %filepath% 
    ) 

    pause 
) 

Так что, когда я начинаю сценарий, он запрашивает адрес папки. Я набираю C: \ Users \ Tim \ Downloads и нажимаю Enter. Затем командная строка закрывается и ничего не происходит. Я изучал синтаксис цикла FOR и еще много чего, но я все еще не могу найти то, что я делаю неправильно. Любая помощь будет оценена, спасибо!

Редактировать: Я уверен, что существуют различия в синтаксисе между операционными системами. Так что в случае, если это важно, у меня есть для Windows 7.

Edit: Я обновил код, что npocmaka предложил:

@ECHO off 
set /p folder="Folder Address: " 
FOR /R %folder% %%G IN (.) DO (
    set filepath=%%~dpa 
    set /p delete="Delete?: " 
    IF /I !delete!="Y"(
     del !filepath! 
    ) 

    pause 
) 

Он по-прежнему дает те же результаты, однако.

+0

Вы можете использовать команду дерева.
Пример: дерево D: \ – RookieTEC9

ответ

1

Вам нужно delayed expansion и собственно логическое ИЛИ (тот, который вы используете, а AND - использовать /I переключатель в IF):

@ECHO off 
set /p folder="Folder Address: " 
setlocal enableDelayedExpansion 
FOR /R "%folder%" %%G IN (*) DO (
    set "filepath=%%~fG" 
    set /p delete="Delete !filepath!?: " 
    IF /I "!delete!" equ "Y" (
     del /Q "!filepath!" 
    ) 

    rem pause 
) 
+0

Вы намеренно используете восклицательные знаки в! Delete! и! filepath !? Это правильно или вы хотели использовать%? Извините, вы можете видеть, насколько я новый для этого хаха – Tim

+0

@Tim - когда включено замедленное расширение, вы можете получить доступ как к '!', Так и '%', чтобы развернуть переменные. Но с помощью '!' Переменных расширяются, когда команда '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. – npocmaka

+0

Хорошо, круто. Он все еще ничего не делает. Могу ли я ввести адрес неправильно, когда я его запустил? Я набираю его точно так же, как C: \ Users \ Tim \ Downloads – Tim

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