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

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

kefirko 12-02-2012 15:54 1856979

Непонятный глюк в записи из командной строки в текстовый документ.
 
Вложений: 1
Общий смысл такой:
Есть файлик number.ini, в нем только число. Это счетчик номера договора.
При запуске Новый договор.cmd создается папка типа "Номер договора. Клиент изделие".
Так вот беда в том, что если в файлике number.ini будет число от 0 до 8, то потом в него не записывается новое число.
А вот если будет число от 9, то все нормально.
Я ничего понять не могу. Помогите.
Код:

@echo off
echo.
echo                    ‚ўҐ¤ЁвҐ д*¬Ё«Ёо Є«ЁҐ*в* Ё **§ў**ЁҐ Ё§¤Ґ«Ёп 
echo                    Џ®пб*пойЁ© ЇаЁ¬Ґа: ?ў**®ў вг¬Ў* 
echo. 
set /p client= 
for /f %%i in (%~dp0\number.ini) do set number=%%i 
md "%~dp0\%number%. %client%" 
set /a number=number+1 
echo %number%>"%~dp0\number.ini"

Ну или вдруг у кого есть идеи получше и проще реализовать данную задумку, буду рад выслушать.

kiripanda 12-02-2012 16:34 1857018

Поставьте точку echo.%number%>"%~dp0\number.ini"

kefirko 12-02-2012 16:36 1857022

Цитата:

Цитата kiripanda
Поставьте точку echo.%number%>"%~dp0\number.ini" »

Ура! А вот теперь можете популярно объяснить в чем была беда?

root221 12-02-2012 16:55 1857040

Афигеть, с таким я первый раз сталкиваюсь ))) Хотя тоже пробЫвал так

Код:

echo. %number%>"%~dp0\number.ini"
=)))

вот только, из-за пробела не работало, ничего.

так тоже работает.

Код:

echo:%number%>"%~dp0\number.ini"

kiripanda 12-02-2012 17:00 1857049

Цитата:

Цитата kefirko
можете популярно объяснить в чем была беда? »

Когда %number% раскрывается в цифру, cmd воспринимает конструкцию X> как перенаправление потока.
echo %number% >"%~dp0\number.ini" — есть пробел, не получается конструкция X>. Работает
>"%~dp0\number.ini" echo %number% — ваще не получается конструкция X>. Работает

gora 12-02-2012 17:45 1857091

Цитата:

Цитата kefirko
"%~dp0\number.ini" »

Слеш здесь лишний, переменная %~dp0 сама содержит завершающий слеш.

kiripanda 12-02-2012 18:05 1857108

gora
Не мешает. Зато лучше читается



А вот здесь лучше будет
for /f "usebackq" %%i in ("%~dp0\number.ini") do set /a number=%%i
или
for /f %%i in ('type "%~dp0\number.ini"') do set /a number=%%i

root221 12-02-2012 19:02 1857149

kiripanda, что это у тебя за редактор? на скрине.

kiripanda 12-02-2012 19:16 1857159

ЕдитПлюс (платный)
Примерно также выглядит http://wincmd.ru/directory/synplus.html (бесплатный)
не удалось только управляющие символы сделать полутоном

если раздражают, то можно их отключить

Но в обоих случаях подсветку правил под себя

Iska 12-02-2012 19:54 1857191

Для ввода значения из текстового файла, содержащего единственную строку, нет необходимости в организации разбора. Достаточно простой конструкции из «set /p» с перенаправлением ввода:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

>nul <0001.txt set /p sValue=
echo %sValue%

endlocal
exit /b 0

Редактор Far Manager'а вкупе с Colorer'ом:

Расцветка — одна из предустановленных, наиболее подходящая к моей цветовой схеме Far Manager'а (настолько, что даже не стал ничего править).


Время: 18:44.

Время: 18:44.
© OSzone.net 2001-