2013-04-23 3 views
-1

Я написал этот скрипт, чтобы объединить больше html-файла. Я использовал случайную функцию для части этого. Я вижу странную вещь ...Я не вижу сгенерированного случайного числа

@echo on 
pause 
CD "C:\Documents and Settings\Mauro\Documenti\Firme\ProvaMerge\" 
pause 
for %%i in (Pasqualino,Mauro) DO (
pause 
ECHO %%i 
pause 
type Parti_Standard\StrutturaTabella_1parte.txt > %%i.html 
pause 
type utenti\%%i.html >> %%i.html 
pause 
type Parti_Standard\StrutturaTabella_2parte.txt >>%%i.html 
:loop 
set /a photo=%random% %% 3 + 1 
ECHO RANDOM 
ECHO %random% %%PHOTO 
TYPE Immagini\%photo%.txt >> %%i.html 
pause 
type Parti_Standard\StrutturaTabella_3parte.txt >> %%i.html 
type Firme_Standard\"Firma Inox Pack.html" >> %%i.html 
) 
pause 

Все в порядке, но я не вижу %photo% переменных ... Я попытался с %%photo или %photo%, но я получаю только пустую переменный. Вместо этого сначала, чтобы улучшить сложность этого скрипта, я использовал его без цикла for ... И он отлично работает.

@echo on 
CD "C:\Documents and Settings\Mauro\Documenti\Firme\ProvaMerge\" 
type Parti_Standard\StrutturaTabella_1parte.txt >new.html 
type mauro.html >> new.html 
type Parti_Standard\StrutturaTabella_2parte.txt >>new.html 
:loop 
set /a photo=%random% %% 3 + 1 
echo %%photo 
pause 
TYPE Immagini\%photo%.txt >> new.html 
type Parti_Standard\StrutturaTabella_3parte.txt >> new.html 
type Firme_Standard\"Firma Inox Pack.html" >>new.html 
pause 

Почему?

+0

Я не понимаю, извините? Я пробовал только один%, но это то же самое ... –

+0

Вы пытались использовать EnableDelayedExpansion и использовать! для вашей переменной? –

+0

См. Мой ответ/пример. – Endoro

ответ

0

Внутри блокблока (например, для цикла) требуется delayed expansion. Пример, это не работает:

@echo off&setlocal 
(
set /a photo=%random% %% 3 + 1 
echo %photo% 
) 

.. и это работает:

@echo off&setlocal enabledelayedexpansion 
(
set /a photo=!random! %% 3 + 1 
echo !photo! 
) 

Этот Асо должен быть использован для записи в файл:

TYPE Immagini\!photo!.txt >> %%i.html 
+0

Я положил !! также в типе ... Когда я пытаюсь «эхо! фото!» Я вижу написанное эхо! Фото! а не сгенерированное число. Затем также «type! Photo! .txt, а не 1.txt или 2 или 3 ... Я нажимаю любую клавишу, скрипт продолжается, я вижу имя созданного файла, затем снова нажимаю и только теперь могу см. сгенерированное число .. но слишком поздно включать, чтобы принять это ... Я не могу опубликовать изображение, чтобы вы поняли ... ma parli italiano? –

+0

Отсутствует команда 'setlocal enabledelayedexpansion'! – Endoro

0

Хорошо, теперь это работает ! Спасибо!!

@echooff 
pause 
CD "C:\Documents and Settings\Mauro\Documenti\Firme\ProvaMerge\" 
for %%i in (Pasqualino,Mauro) DO (
for %%g in ("Firma Inox Pack","Firma Mail Arca Cucine") Do (
pause 
ECHO "%%i %%g".html 
type Parti_Standard\StrutturaTabella_1parte.txt > Firme_Composte\%%i\"%%i %%g".html 
type utenti\%%i.html >> Firme_Composte\%%i\"%%i %%g".html 
type Parti_Standard\StrutturaTabella_2parte.txt >> Firme_Composte\%%i\"%%i %%g".html 
pause 
setlocal enabledelayedexpansion 
(
set /a n=!random! %% 3 + 1 
echo !n! 
) 
TYPE Immagini\!n!.txt >> Firme_Composte\%%i\"%%i %%g".html 
pause 
type Parti_Standard\StrutturaTabella_3parte.txt >> Firme_Composte\%%i\"%%i %%g".html 
type Firme_Standard\%%g.html >> Firme_Composte\%%i\"%%i %%g".html 
) 
) 
Смежные вопросы