Frage

ca. 3 Tagen habe ich eine Frage gestellt, die hier gefunden werden kann:

, wie in einer Textdatei mit einer Batch-Datei eine Zeichenfolge in der zweiten Zeile ersetzen?

Ich bin Umwandlung der Buchstaben in einer Textdatei in ihre jeweiligen Nummern. Ich erhalte Fehlermeldungen wie „Zugriff verweigert“ und „Kann diese Datei nicht finden“ - aber die gleiche Batchdatei, die mir all diese Fehler ist auch derjenige ist zu geben, die diese Textdateien gemacht zu beginnen! So ist es im selben Verzeichnis wie die Batch-Datei sollte sich (wenn nicht anders angegeben), nicht wahr? Ich ging sogar in diesen Ordner und überprüft, und sie sind da.

Ich habe ein kleines Skript hinzufügen, um die Dateien zu verstecken, nachdem sie so angelegt wurden, dass es nicht so vollgestopft aussehen würde. Ich tat dies, indem mit

attrib +h C:\script\%name%.txt

wäre eine Datei mit diesem Befehl macht es unsichtbar für Batch-Programme versteckt, die für sie / Anruf auf sie suchen?

Hier ist ein Link auf die Datei "stringparsing.bat": http: // Upload .com / files / a1m1d2f4 / stringparsing.bat /

Wenn Sie mir in immer dieses Programm helfen könnten seine Aufgabe zu erfüllen ohne Fehler wäre es sehr zu schätzen!

Hier ist die "stringparsing.bat" Datei in voller Länge:

@echo off
setlocal enabledelayedexpansion 
title BETA
cls
cd C:\script\st
echo.
echo.
echo.
echo      Setting Variables...
echo      Loading Language Database...

:: ###################################################################################
::    CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE
:: ###################################################################################




TIMEOUT /t 5 /nobreak > 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.
set /p name=  please type a name for your new language file:
echo.
echo         =================================================================================
cls
echo. > %name%.txt
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 File For Encoding!            #
echo        #                                                            #
echo        #============================================================#
echo        ##############################################################
echo        ==============================================================

set /p line1= :
echo %line1% >> %name%.txt 2> nul


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!
set /p name=<Language_File.txt
timeout /t 4 /nobreak > nul
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.

for /f "delims=" %%i in (!name!.txt) do ( 
echo translating "%%i"
set var=%%i 
set var=!var:a=1 ! 
set var=!var:b=2 ! 
set var=!var:c=3 ! 
set var=!var:d=4 ! 
set var=!var:e=5 ! 
set var=!var:f=6 ! 
set var=!var:g=7 ! 
set var=!var:h=8 ! 
set var=!var:i=9 ! 
set var=!var:j=10 ! 
set var=!var:k=11 ! 
set var=!var:l=12 ! 
set var=!var:m=13 ! 
set var=!var:n=14 ! 
set var=!var:o=15 ! 
set var=!var:p=16 ! 
set var=!var:q=17 ! 
set var=!var:r=18 ! 
set var=!var:s=19 ! 
set var=!var:t=20 ! 
set var=!var:u=21 ! 
set var=!var:v=22 ! 
set var=!var:w=23 ! 
set var=!var:x=24 ! 
set var=!var:y=25 ! 
set var=!var:z=26 ! 

echo !var! 
) 

echo !var! > !name!.txt

pause >nul
TIMEOUT /t 5 /nobreak > 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!
TIMEOUT /t 5 /nobreak > nul





::(%xx%) -1  I/O Stream= "SHELL.dll" 
:: IF EXIST [&1[Parser_2009]] exit

Exit


:: #####################################################################################
War es hilfreich?

Lösung

Sie haben ein paar Probleme. Zunächst wird der Zugriff verweigert Problem ist von Ihnen zu einer versteckten Datei umgeleitet wird.

echo %name% > Language_File.txt
attrib +h Language_File.txt

Beachten Sie, dass das erste Mal, wenn Sie das Skript ausführen, wird es funktionieren, weil Language_File.txt nicht existiert und wird daher nicht ausgeblendet werden. Das zweite Mal, wenn Sie es ausführen, werden Sie Zugriff verweigert bekommen. Ich weiß nicht, warum Windows-Sie das nicht tun lassen. Sie können dieses Problem in ein paar Wege lösen.

1. Speichern Sie die Datei in den temporären Verzeichnis des Benutzers. Mit diesem Ansatz wird Ihr Verzeichnis nicht vollgestopft bekommen.

echo %name% > %TMP%\Language_File.txt

2. Speichern Sie die Datei in ein Unterverzeichnis, dass Sie besitzen, so dass es nicht das Skriptverzeichnis nicht unübersichtlich.

if not exist workspace mkdir workspace
echo %name% > workspace\Language_File.txt

3. Sichtbar machen die Datei, bevor Sie es benutzen. Da die Datei nicht das erste Mal existieren führen Sie das Skript, vielleicht sollten Sie nur attrib -h wenn es vorhanden ist.

if exist Language_File.txt attrib -h Language_File.txt
echo %name% > %TMP%\Language_File.txt
attrib +h Language_File.txt

4. überhaupt nicht verwenden Language_File.txt! Ich sehe nicht, warum Sie es brauchen. Verwenden Sie einfach Variablen die Namen der Sprachdatei zu halten. In der Tat haben Sie bereits den Namen in %name%, nicht wahr?

Zweitens sollten Sie den Wert Ihrer Variablen überprüfen, um zu sehen, was sie wirklich halten. Wenn Sie die Inhalte von Language_File.txt in Ihre Variable laden, wird es alle Inhalte geladen werden. Dazu gehört auch die versteckten Zeilenumbrüche \r\n, obwohl das Skript sie in die Variable als Räume zu bringen scheint. Siehe auch:

c:\batch\t>echo language file is loading now!
language file is loading now
C:\batch\t>set /p name= <Language_File.txt
C:\batch\t>echo -%name%-
-langfile  -

Wenn Sie %name% durch Bindestriche umgeben Echo, können Sie sehen, dass es zwei Räume, nachdem sie von (vermutlich) die Zeilenumbrüche. Um dieses Problem zu lösen, können Sie einstellen, verwenden Sie die hinteren Zeichen zu trimmen.

C:\batch\t>echo language file is loading now!
language file is loading now
C:\batch\t>set /p name= <Language_File.txt
C:\batch\t>set name=%name:~0,-2%
C:\batch\t>echo -%name%-
-langfile-

Im zweiten Beispiel `% name% nicht die versteckten Zeichen hat.

Schließlich müssen Sie nur auf die Verwendung ! den Zugriff auf Variablen, die Sie in der for Schleife gesetzt. Also alle Verweise auf !name! sollte %name% stattdessen sein. Das ist wahrscheinlich die Fehlermeldung „Datei kann nicht finden“.

Andere Tipps

her das "stringparsing.bat" file:

@echo off
setlocal enabledelayedexpansion 
title BETA
cls
cd C:\script\st
echo.
echo.
echo.
echo      Setting Variables...
echo      Loading Language Database...

:: ###################################################################################
::    CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE CALLING VARIABLE DATABASE
:: ###################################################################################




TIMEOUT /t 5 /nobreak > 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.
set /p name=  please type a name for your new language file:
echo.
echo         =================================================================================
cls
echo. > %name%.txt
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 File For Encoding!            #
echo        #                                                            #
echo        #============================================================#
echo        ##############################################################
echo        ==============================================================

set /p line1= :
echo %line1% >> %name%.txt 2> nul


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!
set /p name=<Language_File.txt
timeout /t 4 /nobreak > nul
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.

for /f "delims=" %%i in (!name!.txt) do ( 
echo translating "%%i"
set var=%%i 
set var=!var:a=1 ! 
set var=!var:b=2 ! 
set var=!var:c=3 ! 
set var=!var:d=4 ! 
set var=!var:e=5 ! 
set var=!var:f=6 ! 
set var=!var:g=7 ! 
set var=!var:h=8 ! 
set var=!var:i=9 ! 
set var=!var:j=10 ! 
set var=!var:k=11 ! 
set var=!var:l=12 ! 
set var=!var:m=13 ! 
set var=!var:n=14 ! 
set var=!var:o=15 ! 
set var=!var:p=16 ! 
set var=!var:q=17 ! 
set var=!var:r=18 ! 
set var=!var:s=19 ! 
set var=!var:t=20 ! 
set var=!var:u=21 ! 
set var=!var:v=22 ! 
set var=!var:w=23 ! 
set var=!var:x=24 ! 
set var=!var:y=25 ! 
set var=!var:z=26 ! 

echo !var! 
) 

echo !var! > !name!.txt

pause >nul
TIMEOUT /t 5 /nobreak > 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!
TIMEOUT /t 5 /nobreak > nul





::(%xx%) -1  I/O Stream= "SHELL.dll" 
:: IF EXIST [&1[Parser_2009]] exit

Exit


:: #####################################################################################

ich schließlich gelernt, wie der Code-Snippet zu formatieren. (Heres einen Link auf eine andere Kopie davon, wenn Sie es brauchen.)

, wie in einer Textdatei mit einer Batch-Datei eine Zeichenfolge in der zweiten Zeile ersetzen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top