2015-01-26 5 views
0

Я написал это из-за скуки, но мне нужна небольшая помощь. Следующий код - это целое, но я разбиваю его на более мелкие куски, поскольку вариант 2 - боль.Пакетный скрипт для удаления файла IE 11

@echo off 
Set SQMFile="C$\Users\Default\AppData\Local\Microsoft\Windows\Temporary Internet Files\SQM" 
Set CSVFile="%userprofile\Documents" 
:top 
cls 
echo. 
echo You upgraded to IE 11 and now you can't login 
echo follow the prompts below and I will fix it 
echo for you :) 
echo. 
echo. 
echo 1) Single Computer? 
echo 2) Multiple Computers? (txt file) 
echo 3) Help menu 
echo. 
echo. 
Set /p C="What do you want to do? " 
if %C%==1 goto opt1 
if %C%==2 goto opt2 
if /i %C%==3 goto help 
::=================================================================== 
:opt1 
Set /p comname="Whats the computer name? " 
if exist "\\%comname%\%SQMFile\iesqmdata_setup0.sqm" (
    echo File is there... 
    echo Deleting File 
    del "\\%comname%\%SQMFile\iesqmdata_setup0.sqm" 
    goto top 
) else (
    echo File is not there 
    goto top 
) 
::=================================================================== 
:opt2 
Set /p opt2="Is the file in your Documents folder named Computers.txt? (Y/N) " 
if /i %opt2%==y goto file 
if /i %opt2%==n goto loc 
::=================================================================== 
:loc 
cls 
echo Where's the file located and what's it called? 
echo example "C:\users\<username>\documents\list of comptures.txt" 
set /p newloc="No need for quotes: " 
echo In File label 
pause 
for /F %%G in ("%newloc%") DO (
    if exist "\\%%G\%SQMFile\iesqmdata_setup0.sqm" (
    echo File is there 
    pause 
    ::del "\\%%G\%SQMFile\iesqmdata_setup0.sqm" 
    ) else ( 
    echo File is not there 
    ) 
) 
Pause 
goto top 
::=================================================================== 
:file 
echo In File label 
pause 
for /F %%G in ("%CSVFile%\Computers.txt") DO (
    if exist "\\%%G\%SQMFile\iesqmdata_setup0.sqm" (
    echo File is there 
    ::del "\\%%G\%SQMFile\iesqmdata_setup0.sqm" 
    ) else ( 
    echo File is not there 
    ) 
) 
Pause 
goto top 
::=================================================================== 
:help 
cls 
echo. 
echo. 
echo =================Help Menu=========================== 
echo This script is used only for deleting the .sqm 
echo file that likes to break the "User Logon Service" 
echo for computers after updating to IE 11 
echo. 
echo Option 1 is for single computers. 
echo It checks for the file and if there it 
echo deletes it. 
echo. 
echo Option 2 does the same as 1 but is more geared towards 
echo mass amounts of computers. a multi line, single entry 
echo file is supported ex:Line1 
echo     Line2 
echo     Line3 
echo Please save the file in %userprofile%\Documents 
echo with the file name Computers.txt 
echo ===================================================== 
echo. 
echo. 
Pause 
goto top 

:eof 

Так как я уже говорил выше Вариант 2 дает мне ") was unexpected at this time" для обоих Да и №

:loc 

работ до For /F и то, где находится решает потерпеть неудачу и бросить эту ошибку. Но то, что я пытаюсь сделать, это прочитать файл с именами и проверить, удаляет ли файл. Если нет, то переходите к следующему.

блок в вопросе:

:opt2 
Set /p opt2="Is the file in your Documents folder named Computers.txt? (Y/N) " 
if /i %opt2%==y goto file 
if /i %opt2%==n goto loc 
::=================================================================== 
:loc 
cls 
echo Where's the file located and what's it called? 
echo example "C:\users\<username>\documents\list of comptures.txt" 
set /p newloc="No need for quotes: " 
echo In File label 
pause 
for /F %%G in ("%newloc%") DO (
    if exist "\\%%G\%SQMFile\iesqmdata_setup0.sqm" (
    echo File is there 
    pause 
    ::del "\\%%G\%SQMFile\iesqmdata_setup0.sqm" 
    ) else ( 
    echo File is not there 
    ) 
) 
Pause 
goto top 
::=================================================================== 
:file 
echo In File label 
pause 
for /F %%G in ("%CSVFile%\Computers.txt") DO (
    if exist "\\%%G\%SQMFile\iesqmdata_setup0.sqm" (
    echo File is there 
    ::del "\\%%G\%SQMFile\iesqmdata_setup0.sqm" 
    ) else ( 
    echo File is not there 
    ) 
) 
Pause 
goto top 
+1

Возможно, вы пытаетесь использовать '::' как маркер комментария в скобках кода. Вы должны использовать 'rem' для обозначения комментариев в блоках кода. Используйте 'rem ::', если хотите, но 'rem' тем не менее. Строго говоря, большую часть времени, когда вы видите '::', обозначающий комментарий в пакетном скрипте, на самом деле это просто неиспользуемая метка. Но вы получаете ошибки, если пытаетесь вставить метку в скобках кода. – rojo

+0

Изменил их все. Я не знал, что '::' был плохим. Спасибо – Benny

ответ

1

Отсутствует % в if exist "\\%%G\%SQMFile\iesqmdata_setup0.sqm" ( (и более). Должно быть

if exist "\\%%G\%SQMFile%\iesqmdata_setup0.sqm" (

И избавиться от прекращения :eof этикетки ... Это предопределенный ярлык, который будет выходить из текущей подпрограммы. Чтобы выйти из файла пакетного сценария или выйти из подпрограммы, укажите GOTO :eof, это передаст управление в конец текущего командного файла или конец текущей подпрограммы.

Edit:

Set "SQMFile=C$\Users\Default\AppData\Local\Microsoft\Windows\Temporary Internet Files\SQM" 
Set "CSVFile=%userprofile%\Documents" 

Следуйте Рохо «s советы по rem против вреден ::.

+0

Ahh, поэтому я пропустил дерьмовую сумму '%' в файле. Изменил их все, и теперь она мурлычет, как котенок. Спасибо. Если вы хотите, я могу опубликовать заполненный файл для будущих сбоев обновления IE. – Benny

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