2009-11-10 4 views
0

Приветствую вас, дорогие эксперты!Windows Shell Script: Невозможно выполнить замену строк в подпрограмме

Не могли бы вы мне советы о том, как справиться с этой проблемой:

@echo off 
cls 

setlocal enabledelayedexpansion 

path=%CD%;%path% 

set NumberOfPages=553 
rem set /A MaxFileIndex=%Counter% - 1 
set MaxFileIndex=1 

del Output.txt 

for /l %%i in (0,1,%MaxFileIndex%) do call :GenerateFileList %%i 
goto :eof 


:::::::::::::::::::::::::: 
:GenerateFileList 
:::::::::::::::::::::::::: 
setlocal enabledelayedexpansion 

set CurrentFileName="File(%1).txt" 
echo !CurrentFileName:"=! > Output.txt 
goto :eof 

:::::::::::::::::::::::::: 
:eof 
:::::::::::::::::::::::::: 
endlocal 

Этот код повторяет на экране вместо написания в «ExtractedLinks.txt». В чем проблема?

+1

Проблема в том, что язык CMD Windows, возможно, является наихудшим языком сценариев. –

+0

@ Joe: Нет, это не так. Кто-то, кто не знает, как его использовать, является проблемой здесь. @Andrey: Почему вы ожидаете, что он напишет в «ExtractedLinks.txt»? Вы не сказали ему делать что-то подобное, основываясь на том, что вы разместили. Вместо этого попробуйте объяснить, что именно вы надеетесь достичь; вы только дали около 10% информации, которая нужна людям, чтобы даже попытаться помочь вам. –

+1

Вы оба правы. – mob

ответ

0

Я предполагаю, что вы имеете в виду output.txt не ExtractedLinks.txt:

set c=!CurrentFileName:"=! 
echo %c% > Output.txt 

Кроме того, если вы делаете что-то еще в течение цикла, вы, вероятно, хотите добавить вместо перезаписи:

echo %c% >> Output.txt 

И если вы действительно хотите, чтобы имя файла было ExtractedLinks.txt, просто измените его.

echo %c% >> ExtractedLinks.txt