Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Variablen beschraenkt auf 1024 Bytes (Zeichen)

Frage Entwicklung Batch & Shell

Mitglied: olliwest

olliwest (Level 1) - Jetzt verbinden

04.06.2008, aktualisiert 18:12 Uhr, 7308 Aufrufe, 7 Kommentare

Hallo zusammen,

ich habe ein batchfile in der ich eine Textfile in eine Variable einlese. Jetzt kann es sein das die Textdatei auch mehr als 1024 Zeichen hat.

Code:
@set /p data=< %BSE%\tmp\device_queue.txt
@echo %data%

dann bekomme ich nur die ersten 1024 Zeichen angezeigt.
Kann mann da was gegen machen, oder ist man da beschränkt??


danke & gruß Olli
Mitglied: bastla
04.06.2008 um 14:18 Uhr
Hallo olliwest!

Die Variable selbst hätte mehr Platz zu bieten (siehe am Ende der Command shell overview; getestet mit XP SP2); das Problem ist es, die Daten hineinzubekommen, da beim Lesen aus der Datei tatsächlich nach 1023 Zeichen Schluss ist.

Falls die Eingabedatei nur eine Zeile umfassen sollte, könnte es so klappen:
01.
for /f "delims=" %%i in (%BSE%\tmp\device_queue.txt) do set "data=%%i"
[Edit] Der Ordnung halber noch die Variante "Nur erste Zeile von mehreren verwenden":
01.
set "data=" 
02.
for /f "delims=" %%i in (%BSE%\tmp\device_queue.txt) do if not defined data set "data=%%i"
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: olliwest
04.06.2008 um 14:31 Uhr
hi bastla,

ja es funktioniert!!!

vielen Dank
Bitte warten ..
Mitglied: 65627
04.06.2008 um 14:48 Uhr
@bastla
(siehe am Ende der Command shell overview; getestet mit XP SP2);

Hast du mal ausprobiert, ob das Environement wirklich 65,536KB (IMO = 64 MB) aufnehmen kann?
Bitte warten ..
Mitglied: olliwest
04.06.2008 um 14:52 Uhr
ne, habe ich noch nicht gemacht.

olli
Bitte warten ..
Mitglied: Biber
04.06.2008 um 16:08 Uhr
Moin blubbdi,

explizit getestet hat es sicherlich niemand hier, obwohl wir schon ein, zwei Threads hier hatten mit "Wieviel Variablen kann ich gleichzeitig per SET setzen" oder ähnlich.

wie dort geschrieben wurde... eine Zählschleife, die 10000 oder
100000 Variablen %Test1%.....%Test99999% setzen soll/mit einem textstring füllen soll, läuft NICHT auf einen Fehler. No problem.

Der Knackpunkt ist IMHO ein anderer:
Andere CMDLine-Utitities haben eine nicht dokumentierte MAXSTRINGLEN (lag in der freien Entscheidung der zuständigen M$-PraktikantInnen).

Und ab einer gewissen "ungewöhnlichen" Länge wird es experimentell.
Bzw. wie der sympathische Weltmarktführer sagen würde "...will cause unpredictable results..".

Beispiel: Der Find.exe-Befehl kann nicht in Zeilen suchen (bzw. finden) , wenn diese länger als 2000 und ein paar Zeichen lang sind.
Die FindStr.exe hat dieses Limit nicht.
Dafür aber vielleicht das Limit 4096.

Beispiel 2: wenn eine CMD-Variable 8192 Zeichen lang sein dürfte, was nützt es mir, wenn die maximale Länge einer Befehlszeile 2068 Zeichen ist?
Oder was passiert, wenn ich einen Batch aufrufe mit 9 Parametern
01.
testbatch.cmd %var8192Lang% %var8192Lang% %var8192Lang% %var8192Lang% ...
Ich denke nicht, dass die Größe des Environments "nur durch die Größe des zur Verfügung stehenden Hauptspeichers begrenzt" wird (so war/ist ja eine der beliebten Verkaufsformulierungen).

die Sollbruchstellen sind viel banaler... ein flapsiger #define MAXLEN eines Urlaubs-Aushilfscoders aus dem Jahr 1993 wird das Arbeiten am offiziell dokumentierten Limit schon nach einem Drittel der Strecke beenden.

Siehe Thema "Lange Verzeichnis/Dateinamen... bis zu 32767 Zeichen."
...muahaha....
... ab 253 Zeichenlänge des Namens kannst Du Dateien zwar noch schreiben, aber nie wieder lesen.

Grüße
Biber
Bitte warten ..
Mitglied: 65627
04.06.2008 um 16:31 Uhr
Hi, Biber,

so wahre Lust habe ich im Moment nicht, das wirklich mal auszutesten. Ich dachte allerdings eher an einen Fehler im Technet-Artikel mit dem Komma. ;) Früher, ganz früher (im vorigen Jahrtausend) gab es da mal eine Beschränkung auf 32 KB für das Environment pro MCB. Egal. Bei Gelegenheit setze ich mich da vielleicht mal ran.
Ich habe aus einem anderen MS-Artikel noch im Hinterkopf, dass die Zeichenbegrenzung für einen Pfadnamen bei ~1020 Zeichen liegen soll, die man über den UNC-Pfad erreichen kann. Irgendwo ist der verewigt.

Gruß
blubbdi


In Ansi liegt die max. Länge wohl bei 260 Zeichen,
http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

in Unicode bei 32767 WideChars
http://msdn.microsoft.com/en-us/library/aa364980(VS.85).aspx

Noch was zu Längen: max. Länge von Pfad-Umgebungsvariablen:
http://support.microsoft.com/kb/180410/de

Der Artikel, den ich meinte, behandelte imo die max. Pfadlänge in einem Netzwerk, und das waren 1020 Zeichen (1024 - "\\?\"). Den Artikel habe ich aber so gut versteckt, dass ich ihn im Moment nicht finde. ;)
Bitte warten ..
Mitglied: ahe
04.06.2008 um 18:12 Uhr
Hallo Ihr,

unsere Anwender haben des Öfteren das Limit in der Vergangenheit erreicht und überschritten. Wie Biber sagte konnten die Dateien noch geschrieben, aber nicht mehr geöffnet werden:
Word 97: 210 Zeichen (incl. Laufwerksbuchstaben, Backslashes und Doppelpunkt)
Excel 97: 209 Zeichen (incl. Laufwerksbuchstaben, Backslashes und Doppelpunkt)

Bei Office 2000/2003 gab/gibt es ebenfalls ein Limit, finde jedoch gerade das Dok dazu nicht mehr... müßte aber in der Größenordnung liegen, die Biber schon erwähnte. (Explorer Problem?)

Wir haben uns in der Vergangenheit dann mit dem subst Befehl helfen können, um an die Dateien heranzukommen und zu verschieben...

Ach ja, irgendjemand wollte dann 'mal testen, wieviele Schachtelungstiefen man denn noch verwenden kann, wenn ein Verzeichnis und eine Datei nur einen Buchstaben haben, er hat dann ein Script erstellt hatte, das rekursiv Verzeichnisse anlegte ...
(nach einem Reboot des Fileservers, einigen Ermahnungen und dem Hinweis, dass man das auch manuell machen kann oder ausrechnen kann, konnten wir dann das Verzeichnis löschen...)

mfg
Axel
Bitte warten ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Batch & Shell
gelöst Ausgelagerte Variablen in Batchdatei (6)

Frage von mp-home zum Thema Batch & Shell ...

Windows 10
gelöst Chinesische Zeichen in Dateierweiterung-Selektor-DropDown (5)

Frage von Techos zum Thema Windows 10 ...

Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
Test-ActiveSyncConnectivity Error nach neuem Zertifikat (17)

Frage von Driphex zum Thema Exchange Server ...

Zusammenarbeit
Als Administrator im Großraumbüro (16)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Hyper-V
HYPER V und USB (14)

Frage von Hendrik2586 zum Thema Hyper-V ...