Хорошо, поэтому я работал над довольно сложным пакетным файлом, который в основном просит пользователя создать текстовый файл, содержащий 6 (или более) строк текста. Затем он принимает этот файл и изменяет каждый экземпляр каждой буквы на соответствующий номер (например, если первая строка текстового файла говорит «запрограммирована», тогда программа изменит все экземпляры буквы «a» на 1 и «b», в 2 и так далее до тех пор, пока не было все числа было бы затем прочитать «16 18 15 7 18 1 13 1 2 12 5»), и я бы сделать это с помощью следующего сценария:.Как заменить строку на второй строке в текстовом файле с помощью командного файла?
set /p var=< text.txt
set var=%var:a=1%
echo.%var% >> text.txt
Однако только проблема с этим скриптом заключается в том, что он только изменит букву а в первой строке на 1, а не букву «а» в остальной части документа.
Я также попытался расщепить документ в начале программы, так что, когда пользователь набирает текст для первой строки, он отправляет его в отдельный скрытый файл (text1.txt) вместо того, чтобы просто отправлять все строки текст, который пользователь, в один текстовый файл (text.txt)
я так использую это:
set /p line1=type the first line:
echo %line1% >> text1.txt
attrib +h text1.txt
set /p line2=type the second line:
echo %line2% >> text2.txt
attrib +h text2.txt
:: ########################################################################
:: Im not going to repeat this 6 times but hopefully you get my point
:: ########################################################################
Теперь проблема с расщеплением линий в отдельные файлы, что было бы в эффективных и чрезвычайно трудоемкий, чтобы изменить все экземпляры каждой буквы на их соответствующие номера и сделать это для каждой строки (или в этой ситуации, файла) что пользователь вводит ... Если бы это помогло, если бы я поставил все это в контексте, вот скрипт для моей программы до сих пор, для индекса «: LOADING», который я использую в настоящее время методом, который я объяснил ранее, когда я разделял строки в файлы.
Код: (Save As «stringparsing.bat»)
@echo off
title BETA
cls
echo.
echo.
echo.
echo Setting Variables...
echo Loading Language Database...
:: ###################################################################################
:: CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE
:: ###################################################################################
:: An Idea i was thinking of trying was to put a subscript here that calls another
:: batch file that contains a list of the letters set as variables to their
:: respective numbers (example: SET a=1, SET b=2, SET c=3)
:: -----------------------------------------------------------------------------------
PING 1.1.1.1 -n 1 -w 3000 >NUL
goto MAIN
:MAIN
set foo=0
cls
echo.
echo.
echo.
echo.
echo ===================================
echo #################################
echo ####### Main Menu: #######
echo #################################
echo ===================================
echo.
echo.
echo 1.) Create New Language File...
echo.
echo 2.) Load Existing Lanuage File...
echo.
echo 3.) Settings...
echo ---------------------------------------------------------
SET /p CHOICE= Select a Function:
IF %CHOICE%== 1 GOTO CREATE
IF %CHOICE%== 2 GOTO LOAD
IF %CHOICE%== 3 GOTO SETTINGS
GOTO MAIN
:CREATE
cls
title Step 1
echo.
echo.
echo.
echo echo ============================================================================
echo.
set /p name= please type a name for your new language file:
echo.
echo =================================================================================
cls
echo.
echo.
echo.
echo ==============================================================
echo ##############################################################
echo #============================================================#
echo # #
echo # - After you hit enter you will be redirected #
echo # to a Live Typer. so anything you type into #
echo # it will be sent to %name%.txt. #
echo # #
echo # #
echo # - Next, select load language! #
echo # #
echo #============================================================#
echo ##############################################################
echo ==============================================================
pause
goto typer1
:typer1
cls
set /p line1= :
echo %line1% >> %name%1.txt
attrib +h %name%1.txt
cls
set /p line2= :
echo %line2% >> %name%2.txt
attrib +h %name%2.txt
cls
set /p line3= :
echo %line3% >> %name%3.txt
attrib +h %name%3.txt
cls
set /p line4= :
echo %line4% >> %name%4.txt
attrib +h %name%4.txt
cls
set /p line5= :
echo %line5% >> %name%5.txt
attrib +h %name%5.txt
cls
set /p line6= :
echo %line6% >> %name%6.txt
attrib +h %name%6.txt
cls
echo.
echo.
echo.
echo ==========================================================
echo.
(
IF EXIST %name%1.txt echo - FIRST LINE CONFIRMED.
IF EXIST %name%2.txt echo - SECOND LINE CONFIRMED.
IF EXIST %name%3.txt echo - THIRD LINE CONFIRMED.
IF EXIST %name%4.txt echo - FOURTH LINE CONFIRMED.
IF EXIST %name%5.txt echo - FIFTH LINE CONFIRMED.
IF EXIST %name%6.txt echo - SIXTH LINE CONFIRMED.
echo %name% > Language_File.txt
attrib +h Language_File.txt
set /a foo+ =1
)
echo.
echo ==========================================================
goto LOAD
:LOAD
set /a foo+ =1
IF %foo%== 2 goto loadexternal
goto LOAD23
:loadexternal
echo.
echo language file is loading now!
pause > nul
cls
set /p name=<Language_File.txt
echo.
echo.
echo Language_File Loaded!
pause >nul
goto LOAD23
:LOAD23
cls
echo.
echo.
echo.
echo.
echo.
echo Encoding Your Language File... Please Wait...
echo.
echo.
echo.
PING 1.1.1.1 -n 1 -w 3000 >NUL
:A1
set /p var=< %name%1.txt
set var=%var:a=1%
echo.%var%
echo %var% > %name%1.txt
echo.
echo.
echo.
echo "A" done.
goto B1
:B1
set /p var=< %name%1.txt
set var=%var:b=2%
echo.%var%
echo %var% > %name%1.txt
echo.
echo.
echo.
echo "B" done.
goto C1
:C1
set /p var=< %name%1.txt
set var=%var:c=3%
echo.%var%
echo %var% > %name%1.txt
echo.
echo.
echo.
echo "C" done.
goto D1
:D1
set /p var=< %name%1.txt
set var=%var:d=4%
echo %var% > %name%1.txt
echo "D" done.
goto E1
:E1
set /p var=< %name%1.txt
set var=%var:e=5%
echo %var% > %name%1.txt
echo "E" done.
goto F1
:F1
set /p var=< %name%1.txt
set var=%var:f=6%
echo %var% > %name%1.txt
echo "F" done.
pause
cls
type %name%.txt
pause >nul
goto MAIN
:END
cls
title SHUTTING DOWN...
echo.
echo.
echo.
echo Terminating service stream...
echo.
echo.
echo.
echo.
echo Done! Thank you for using this program!
ping 1.1.1.1 w -n 1 -w 6000 > NUL
Exit***
Если у вас есть решение я бы рад услышать это, потому что я искал высоко и низко для решения этой проблемы, но есть ничего не нашел. Кроме того, если кто-то замечает любые другие ошибки или ошибки в моем скрипте, пожалуйста, не стесняйтесь комментировать!
Заранее благодарен!
PS. Если последний скрипт, который я опубликовал в этом разделе, не вышел правильно, или все было смешано, просто скачайте скрипт по этой ссылке:
[http://home.danieljewison.operaunite.com/f/content/Documents /stringparsing.bat][1]
Вы считаете, что используете современный язык программирования (Python ... Ruby ... что-нибудь действительно)? На самом деле нет веских оснований для использования пакетных файлов на данный момент (... ну, за последние 10 лет действительно). – Gerrat 2010-11-30 04:48:03
ну, если бы я знал что-нибудь о любом из этих языков, ive попробовал делать программы на C++, а у ive были исходные коды для всех, но я не знаю, как их компилировать, потому что все компиляторы там действительно запутывают и попросите у меня столько параметров, и вам нужно скачать soo, чтобы заставить их работать ... но с пакетом вам нужен блокнот: P plus im намного лучше при программировании оболочки/пакета, чем я на любом другом языке (хотя я хотел бы расширить мои знания оболочки, потому что я уверен, что оболочка включает в себя другие части, кроме командных файлов. – daniel11 2010-12-04 01:09:47