Проблема - это оператор if внутри цикла while. Если имя файла не равно часовому, вы проверяете, действительно ли inputFile. Если это так, вы выполняете строки кода внутри всего один раз, прежде чем получать новое имя файла. Вы хотите что-то вроде этого:
while(fileName != sentinel){
cout<< endl;
cout<< fileName << " data" <<endl;
cout<< "*********************************\n" <<endl;
while(inputFile >> inputRead){
count++;
cout<< inputRead <<endl;
}
cout<< "\n*********************************" <<endl;
cout<< fileName << " has " << count << " words." <<endl;
cout<< "\nEnter another file name or type \"quit\" to end: ";
cin>> fileName;
}
Если ваша целевая ОС Windows 7
или новее, возможно, что-то из этого может вам помочь:
@Echo Off
Set "XSL=csv"
For /F "EOL=MDelims=" %%A In ('"WMIc OS Get MUILanguages,Version"'
) Do For /F Tokens^=2^,4-5Delims^=.^"^ %%B In ("%%A"
) Do If %%C Equ 6 If %%D Equ 1 Set "XSL=%__APPDIR__%WBEM\%%B\%XSL%
WMIC /Output:Results.log /Node:@Computers.txt Path SoftwareLicensingProduct^
Where "PartialProductKey Is Not Null And Name Like 'Windows(R)%%' And Not LicenseStatus='1'"^
Get LicenseStatus,Name,ProductKeyID /Format:"%XSL%"
Идея состоит в том, что она будет проверять каждый из перечисленных компьютеров по одному на каждую строку в файле. с именем computers.txt
в текущем рабочем каталоге. Если продукт Windows(R)
не отображается как лицензированный, (т.е. 1
) , он должен вывести некоторую соответствующую информацию в файл с именем Results.log
также в вашем текущем рабочем каталоге.
Выходные данные о состоянии лицензии будут переводиться в одно из следующего:
blockquote>
0
: нелицензировано
1
: лицензировано
[ 1118]2
: OOB Grace
3
: OOT Grace
4
: Non-Genuine Grace
5
: Уведомление
[1122 ]6
: Extended GraceПримечание: Вам может не понадобиться строки
3
-5
приведенного выше сценария, если вы ' Не проверяя с машиныWindows 7
, я добавил их из-за известной проблемы с расположением файлаcsv.xsl
в версиях этой ОС.