Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Переменные в XP проблема (http://forum.oszone.net/showthread.php?t=289560)

Basiak 17-10-2014 14:23 2416686

Переменные в XP проблема
 
Ребят, спасайте, уже всю голову сломал и половину инета излазил. Имеется код с переменными который отлично выполняется на Windows 7 и совсем не хочет выполнятся в XP. Вот кусок кода

if exist %USERPROFILE%\1\ (
msg * "PriVet!"
) else (
msg * "Poka"
)
pause

Пишет and не является внутренней или внешней командой и т.д.

И почти со всеми переменными. кроме windir, programfiles, systemDrive.
Пробывал на двух XP запускать, одна из них только что установленная + обновленная.
Версия cmd 5.1.2600.

gora 17-10-2014 15:39 2416709

Цитата:

Цитата Basiak
Пишет and не является внутренней или внешней командой и т.д. »

Переменная %USERPROFILE% в ХР содержит пробелы и путь с ней нужно заключать в кавычки.
Код:

if exist "%USERPROFILE%\1\" (
...

Кстати, и в win7 эта переменная может содержать пробелы, и Вам просто повезло.

Basiak 17-10-2014 16:33 2416723

Цитата:

Цитата gora
Переменная %USERPROFILE% в ХР содержит пробелы и путь с ней нужно заключать в кавычки. »

Клево!
Простите за наглость, может тогда подскажите есть строчка

for %%a in ("%vobmen%\Export_*.xls") do (echo.%%~na>>%vlog% & set /a sum+=1)
echo Количество старых файлов !sum! >>%vlog%

в семерке писала в файл названия всех найденых файлов (%%~na) и общее количество, а в XP теперь пишет не название а:
Documents
and
Рабочий
И всегда количество файлов пишет три. Вне зависимости 1 там или 5.

Оу, понял свой косяк - необходимо так:
for %%a in (%vobmen%\"Export_*.xls") do (echo.%%~na>>%vlog% & set /a sum+=1)

Цитата:

Цитата gora
gora »

Огромное спасибо!

gora 17-10-2014 17:13 2416740

Цитата:

Цитата Basiak
необходимо так:
for %%a in (%vobmen%\"Export_*.xls") do (echo.%%~na>>%vlog% & set /a sum+=1) »

Лучше так:
Код:

for %%a in ("%vobmen%\Export_*.xls") do (echo.%%~na>>"%vlog%" & set /a sum+=1)
Ибо переменные %vobmen% и %vlog% тоже могут иметь пробелы. Вообще кавычки в таких местах - "правило хорошего тона" в программировании.


Время: 13:10.

Время: 13:10.
© OSzone.net 2001-