bash Script: Leerzeichen- und Variablen-Auswertungsproblem?

Hallo!

( tl;dr ? überflieg das Fettgedruckte und das CodeBeispiel =) )

Das Problem ist etwas komplexer, ich konnte es aber auf das folgende, einfache Problem begrenzen:

  • Prüfe ob das Verzeichnis /backups/01 today/ existiert.
  • falls Ja: Wechsle in das Verzeichnis und dann führe den Befehl macheX aus
  • ansonsten: gib eine Fehlermeldung aus

Kern des Problems: Das Verzeichnis enthält enthält ein Leerzeichen und der Pfad muss vor dem Prozess in der Variablen DIRR gepeichert werden. (Der Pfad kann nicht umbenannt werden, das wäre zu einfach)

Ich habe in etwa folgendes:

#!/bin/bash

DIRR="/backups/01 today"

if [ -d $DIRR ];
then
  cd $DIRR
  macheX
else
   echo "FEHLER: $DIRR existiert nicht!"
fi

Wie man sieht wird die Variable DIRR anfangs gesetzt und wird anschließend auf drei unterschiedliche arten ausgewertet. Ich habe im Code-Beispiel bewusst auf ` ' und " Einfassungen von DIRR verzichtet, denn genau das ist das Problem! Wie müssen diese DIRR eingefasst werden und wie der Pfad angegeben werden, damit es funktioniert?

Ich habe etliche Kombinationen durch und werde langsam verrückt. =) Wenn ich den Pfad z.B. mit oder ohne escape-Zeichen vor dem Leerzeichen angebe, dann klappt das eine aber es hakt dann wieder wo anders. In der Fehlermeldung darf das Verzeichnis beliebig erscheinen (mit ` ' " oder auch dem escape-Zeichen \ )

Wer schafft es mein Brett vorm Kopf zu zersägen? =)

Linux, Bash, Script, Shell
Welcher Matheanteil von Maschinenbau- oder Elektrotechnik- Studium ist schwieriger?

Ich habe mein 3er Abi als ehemaliger Hauptschüler geschafft und möchte Studieren. Jedoch habe ich Angst, das Studium aufgrund der Masse oder einfach allgemein aus irgenteinem Grund nicht zu schaffen. Ich steh auf Mathe, Technik und Informatik und habe mir deshalb Studiengänge wie folgt Elektrotechnik; Maschinenbau; Wirtschaftsingeneurwesen; Wirtsschaftsinformatik ins Auge gefasst. Einer meiner Fragen ist nun, welche dieser genannten Fächer ist "einfacher" (einfach ist Subjectiv...das ist mir klar), "einfacher" gerade im bezug auf die Mathe-Modulle zu Beginn des Studiums.... Für Elektrotechnik wären das Mathematik für Elektrotechnik-Ingeneure 1-3; für Maschinenbau und Wirstschaftsingeneurwesen ist es Mathematik 1-3. Welche der beiden ist den im Vergleich gesehen "einfacher"?Gibt es hier ehemalige Studenten / bzw noch Studierende, die Ihre Scripts/Pdfs hochladen könnten... vlt sogar mir schicken könnten per E-Mail? richard-siebert@outlook.de Ich würde mir gerne schonmal ein Einblick in den Stoff, auch wenn ich mit großer Wahrscheinlichkeit nichts verstehen werde, verschaffen.... auch wären Klausuren sehr gut um auch Inhalt solcher Prüfungen zu überschauen.. ggf mit lösungen, .. ihr könnt auch die Namen entfernen, falls ihr sie einfach nur koppiert.. ich werde mit scripts /etc verntwortungsbewusst, vertraulich umgehen und nicht publizieren.Das versprechen ich, sie dienen nur meiner eigenen Nutzung. Ich wäre über inhaltliche ernstgemeinte Antworten sehr erfreut und über Materiallien sogar noch mehr. zu letzt: Wie fandet Ihr das Elektrotechnik oder Maschinenbau Studium ? Kann man mit dem Bachleor of Science beruflich Fussfassen oder wird es allg. bevorzugt, wenn man direkt den Master macht.. oder kann man mit dem B. Science nicht so viel anfangen , als wie mit dem Bachleor of Eng. ??? Danke schonmal im vorraus. Mit freundlichen Grüßen Siebert

Elektrotechnik 100%
Maschinenbau 0%
Wirtschaftsingeneurwesen 0%
Studium, Elektrotechnik, Maschinenbau, Script, Student, Studienwahl, studieren
for schleife Batch Datei Datum formatieren?

Hi Leute ich habe ein Problem mit einer .bat (Batch)

Ausgangsdatei: test.csv hat folgenden Inhalt: 1;201520;52850;0001;UA;4056204084816;in_stock;;745;1;0;Y;N 1;201520;52857;0001;UA;4055263786044;in_stock;;486;1;0;Y;N 1;201520;52858;0001;UA;4055263856440;in_stock;;1733;1;0;Y;N 1;201520;52859;0002;UA;4055263855719;in_stock;;880;1;0;Y;N 1;201520;52860;0002;UA;4055263884474;in_stock;;1157;1;0;Y;N 1;201520;52861;0001;UA;4055263299247;in_stock;;902;1;0;Y;N 1;201520;52862;0001;UA;4055263780097;in_stock;;739;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;in_stock;;55;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;incoming;20151103;4715;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;incoming;20151229;445;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;incoming;20160119;1300;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;incoming;20160202;1238;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;incoming;20160209;389;1;0;Y;N 1;201520;53054;0001;OSFA;4056204028681;incoming;20160216;160;1;0;Y;N 1;201520;67195;0001;UA;4049754368031;in_stock;;0;1;0;Y;N 1;201520;70287;0002;UA;4051909278393;in_stock;;0;1;0;Y;N 1;201520;70287;0003;UA;4051909278379;in_stock;;0;1;0;Y;N

Was ich nun brauche ist das alle mit "in_stock" rausfliegen und nur die erste Zeile mit "incoming" erhalten bleibt. Zudem muß die Spalte mit dem Datum von 20151103 in 03.11.2015 umformatiert werden. Bisher steht in meiner bat folgendes:

@echo off & setlocal
set "quellordner=C:\tmp\vorher\"
set "zielordner=C:\tmptest\"

pushd "%quellordner%"
for /f "delims=" %%i in ('dir /b /a-d test.csv') do findstr /v "in_stock" "%%i">"%zielordner%\%%i"
popd

jedoch bekomme ich so nur die incomming und

Programm, programmieren, bat, Batch, cmd, Script
Excel VBA: Sverweis Formel - Makro einfügen!

Hi zusammen. Habe mir heute mein erstes Userform gebastelt (Google sei Dank...). Mein UF macht simpel nichts anderes, als Einträge aus der EIngabemaske in eine Tabelle zu füllen.

Dim emptyRow As Long

'Ermitteln der ersten leeren Zeile
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

'Wohin werden die eingegebenen Datein eingefüllt?
Cells(emptyRow, 1).Value = ComboBox1.Value
Cells(emptyRow, 5).Value = TextBox1.Value
Cells(emptyRow, 2).Value = TextBox2.Value
Cells(emptyRow, 3).Value = TextBox3.Value
Cells(emptyRow, 7).Value = TextBox4.Value

If OptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "1. Halbjahr"
End If

If OptionButton2.Value = True Then
    Cells(emptyRow, 6).Value = "2. Halbjahr"
End If


Me.Label7 = "Speichern erfolgreich!"

End Sub

Ich muss auch sagen, es funktioniert prächtig. Die Einträge werden alle korrekt erstellt etc. Nur habe ich in Spalte "H" meiner Tabelle, wo die Daten eingefügt werden, eine Spalte für SVerweis. Diese Formel soll jedesmal, wenn ein neuer Eintrag gespeichert wird, angefügt werden. Wenn ich von anfang an alle Formeln runterziehe bis ans Ende der Tabelle braucht Excel 2Minuten zum das Dokument zu öffnen... Formel lautet: =SVERWEIS($A2;'Tabelle1'!$A$1:$C$31;2;FALSCH) Wobei der Bezug A2 natürlich mit jeder Zeile anders ist (A2, A3, A4 etc.) Wenn ich die Formel "aufzeichne", erscheint folgendes, womit ich absolut nix anfangen kann.

Sub SVerweis_HC()
'
' SVerweis_HC Makro
'

'
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC1,'Tabelle1'!R[-1317]C[-7]:R[-1289]C[-6],2,FALSE)"
    Range("H1319").Select
End Sub

Kann hier wer helfen?

Bild zu Frage
Computer, Microsoft Excel, programmieren, Makro, VBA, Script, Tabelle
BATCH-Datei Befehle: "@ECHO OFF", "REM", "ECHO" usw. -- FUNKTIONIEREN NICHT

Ich schreibe gerade ein Backup-Script per Batch Datei um einige Dateien in einem rutsch in die Cloud zu sichern.

Das Script Ansich ist überhaupt kein Problem, die Batch Sprache verstehe ich super und seit ca. 20 Jahren. Offensichtlich habe ich da ein anderes Problem. Vielleicht könnt ihr es mal bei Euch testen und mir sagen was bei Euch passiert?

Wenn ich also eine Batch Datei schreibe, möchte ich z.B. nicht dass die Befehle(Befehlszeile) angezeigt werden, deswegen beginne ich meine Batch-Datei mit einem:

@ECHO OFF

Dann kommt der Rest vom Script usw.

Ich bekomme allerdings eine Fehlermeldung bei der Stapelverarbeitung, bevor der erste Befehl aufgeführt wird.

Beispiel:

@echo off
REM Dieses ist ein Test um zu zeigen das etwas nicht stimmt.
ECHO Dieses ist ein Test.
pause

Wenn ich dieses kleine, Script(Batchdatei) ausführe kommt folgende Fehlermeldung:

Das System kann den angegebenen Pfad nicht finden.
Drücken Sie eine beliebige Taste . . .

Sowohl beim Doppelklick auf die Batchdatei selbst, als auch bei der Eingabe in der CMD Befehlszeile.

Interessanter Weise wird weder das @ECHO OFF noch das REM oder Echo korrekt interpretiert. Ich habe eine vermutung, dass die Batch als falsches Format abgespeichert wurde.

Ich Habe verschiedene Editoren benutzt. Notepad in der Standart Einstellung, Notepad ++ nehme ich Standardmäßig.

Ich habe die Kodierungen überprüft also ANSI oder UTF8.

Wenn ich im CMD Befehlszeilenfenster den Befehl "@ECHO OFF" oder "REM" oder "ECHO mit BLABLA" eingebe, funktionieren sie; also außerhalb der Batch Datei.

Ich habe keine Verknüpfung angelegt oder falsche Parameter angegeben, ich starte die Batch direkt aus einem Verzeichnis Namens: D:\Backup. Es sind keine Sonderzeichen enthalten, weder im Namen noch in irgendwelchen Verzeichnissen oder sonstwas.

Also meine Vermutungen sind :

--Falsches Format der Batch Datei <- Warum auch immer --Virus oder Schadprogramm, welches versucht über die Kommandozeile Schadcode einzuschleusen.

Also letztes hänge ich mal den Anfang meines Batch-Scripts für das Backup mit an, damit ihr mal sehen könnt, was mir da angezeigt wird.

@echo off
REM ################################################
REM #          Backup und Sicherungsscript         #
REM #                                              #
REM #                                              #
REM ################################################
pause

Ich habe am Ende eine pause mit eingefügt, damit die Stapelverarbeitung anhält.

Das ist die Ausgabe der Datei im Prompt:

D:\Backup>´╗┐@echo off
Der Befehl "´╗┐@echo off" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Mein System:

AMD 3300T 8GB ATI HD 7850 usw, Windows 7 Deutsch/Home Premium - Original

Benutze Software: Windows 7, Notepad++, Notepad(Windows 7)

Ich hoffe ich konnte genug Informationen liefern, dass mir jemand helfen kann.

Vielen Dank grüße aus HH

Computer, Windows 7, programmieren, Batch, Script, Echo, stapelverarbeitung, R.E.M.

Meistgelesene Fragen zum Thema Script