Re!
Ich kenne die diversen DOS-Befehle. Das wär aber zu einfach. Zur Aufklärung:
Jetzt brauch ich noch die Option per Parameter auszulassende Verzeichnisse zu übergeben.
Sooo schade, dass es nicht in C# sein darf 😦
Gruß
Das ist was ich bisher hab:
@echo off
if {%1}=={} @echo Error! Please specify a path. (e.g.: 'joba c:\directory\folder\')&goto :EOF
if not exist %1 @echo Error! Specified folder not found: %1 &goto :EOF
echo Erase in progress...
setlocal ENABLEDELAYEDEXPANSION
set folder=%1
set delSW=N
if exist "%TEMP%\DelMT.TM1" del /q "%TEMP%\DelMT.TM1"
if exist "%TEMP%\DelMT.TM2" del /q "%TEMP%\DelMT.TM2"
set /a cnt=10000000
for /f "Tokens=*" %%f in ('dir %folder% /AD /S /b') do (
call :IsMT1 "%%f"
)
if not exist "%TEMP%\DelMT.TM1" endlocal&goto :EOF
sort /R "%TEMP%\DelMT.TM1" /O "%TEMP%\DelMT.TM2"
del /q "%TEMP%\DelMT.TM1"
for /f "Tokens=1*" %%f in ('type "%TEMP%\DelMT.TM2"') do (
call :IsMT2 %%g
)
del /q "%TEMP%\DelMT.TM2"
rem echo >%TEMP%\1.vbs wscript.sleep 5000
rem cscript %TEMP%\1.vbs
rem del %TEMP%\1.vbs
del /s /f /a /q %1 >%temp%\erase.log
endlocal
goto :EOF
:IsMT1
set /a cnt=%cnt% + 1
@echo %cnt% %1>>"%TEMP%\DelMT.TM1"
goto :EOF
:IsMT2
pushd %1
set /a numb=0
for /f "Tokens=*" %%a in ('dir /a^|findstr /L /c:" 0 " /c:" 2 "') do (
set /a numb=!numb! + 1
)
popd
if %numb% NEQ 2 goto :EOF
rd /q %1
Nun will ich noch einen weiteren String neben %1 übergeben (%2) und dieses Verzeichnis welches mit %2 definiert wird, soll nicht gelöscht werden.
Angabe: Dieses Programm soll eine Verzeichnisstruktur löschen.
Original von herbivore
Hallo Linus.... oder schreibst - ohne die Powershell - gleich ein kleines C#-Programm.
herbivore
Da wär ich vorn dabei... wär in fünf Minuten gemacht... Dieses Mal solls aber ein Batch Programm sein...
und btw, ich kenne die posting regeln
Gruß
Ich komm absolut nicht zu Rande mit dem Batch zeug... 😦
lol
Ups. Vielleicht hätte ich deutlicher ranschreiben sollen, dass ich DOS Batch programmiere. In C# ists kein Problem. Bekomms nur mit Batch nicht hin...
Gruß
Tag Leute
Ich muss mal wieder aufgeben. 6 Stunden hab ich mich nun versucht, nun fuchsteufelswild und s langt mal wieder. Vielleicht könnt ihr mir helfen.
Ich habe die Strings %1 und %2. Nun möchte ich überprüfen, ob String %1 den String %2 beinhaltet. Ich möchte nicht abprüfen, ob die Strings gleich sind. Letzteres wärer auch zu einfach...
Bin höllisch dankbar für Tipps und Hilfe...
Danke. Linus
lol TEry
Haste nen Wahrsagerkurs mit gemacht? Ich glaub schon...
lol komm ausm Lachen nemmer raus... der Kerle ist gut 🙂 nasse Augen jetzt
Gruß
THX capcom
Werd auch deine Lösung versuchen. Funktioniert auf jeden Fall auch...
Manchmal ists echt einfacher als die Sache in die man sich verkopft...
Gruß
Fuktioniert
Das war einfacher als gedacht. Vielleicht sollte ich mal Pause machen...
Vielen Dank TEry... den Zuspruch zum 'Sharper of the Day' haste von mir sicher 🙂
Gruß
looool TEry
Ich glaub das ist Bull's Eye...
Werds direkt testen... meld mich dann...
THX capcom, TEry und nin...
Ich habe die Lösung alles erstmal in ein Array zu legen gewählt, da mir das als einziger Weg erschien. Leider weiß ich nicht wie ich das mit dem String bewerkstelligen könnte...
zur zweiten Frage:
Ich möchte das ganze Array als Variable an ein anderen Programmteil übergeben, als Body in einer E-Mail. Beispiel folgt:
System.Web.Mail.SmtpMail.Send(sAbsender, sAdresse, sBetreff, TestArray);
Nun verstanden?
Re!
Zur ersten, ArrayList sagt mir leider nichts.
Zur zweiten, das mach ich ja schon, wie oben zu sehen. Möchte aber das Array in eine variable basteln. Geht das?
Tag Leute!
Wie ihr an meinem folgenden Code-Beispiel unschwer erkennen könnt, spiele ich grad mit Arrays herum
static void Main(string[] args)
{
string[] TestArray = new string[31];
int n = 0;
TestArray[n] = DateTime.Now.DayOfWeek.ToString();
n++;
TestArray[n] = DateTime.Now.Day.ToString();
n++;
TestArray[n] = "Reiter";
n++;
for (int i = 0; i < TestArray.Length; i++)
{
Console.WriteLine(TestArray[i]);
}
foreach (string s in TestArray)
{
Console.WriteLine(s);
}
Console.WriteLine("Ende");
Console.ReadKey();
}
Nun hab ich noch zwei Probleme. Ich würde gern oben die Angabe von 31 Zeilen weg lassen, da eine feste Angabe falsch wäre.
Wie kann ich das Array ausgeben ohne jede einzelne Zeile einzeln aufzurufen? Ich stell mir da etwas vor wie:
Console.WriteLine(TestArray);
... aber das funktioniert natürlich nicht.
Könnt ihr mir weiter helfen?
thx in advance, Linus
Re!
Ich arbeite im Moment mit MS Visual C# Express Edition.
Wie heißt die Sache hier auf deutsch?
GRuß
Tag Leute!
Mal wieder ein mir völlig unerklärbares Phänomen. Ich hab hier mein Code. Bastel da ewig dran rum.
Nach ner gewissen Zeit scheint er meine Änderungen beim debuggen nicht mehr zu übernehmen. Selbst wenn ich einen Fehler einbaue, wird der komplett ignoriert und nicht übernommen. Was ist denn da los?
Zum Verständnis:
Code wäre anfänglich:
Console.WriteLine("Hallo");
Ausgabe wäre:
Hallo
Code wäre mit Absicht geändert inklusive Fehler:
Console.WriteLine("Hallo
Console.WirteLine("Wiedersehen");
Ausgabe ist immernoch:
Hallo
Ich versteh das nicht. Wenn ich den Code nehme und ein neues Projekt erstelle, kann ich wieder eine Weile arbeiten bis das Phänomen wieder eintritt. Bin am verzweifeln...
Gruß und THX in Advance
Hallo Leute
Hab ein kleines Problem:
Console.WriteLine(DateTime.Today);
Console.WriteLine(DateTime.Now.Date);
Beide geben mir nach dem Datum die Uhrzeit mit aus. Das will ich aber nicht. Wie kann ich das denn verhindern? Es soll nur das Datum ausgegeben werden...
THX in Advance...
Gruß Linus
YEAH!!!
Borg, habs verstanden, funktioniert!!!
Vielen Dank an Alle!
Gruß, Linus
Das was ich tun möchte funktioniert in cmd-prompt...
Lieder bekomm ichs aber nicht in meinem c# programm hin
Re Borg!
Es gibt zwei Teile. Zum einen FileName (hier rarlab) und zum anderen Arguments (hier " " + rarpar + " " + bckdir + "\" + text_ + ".rar " + bcktmp + "\" + text_ )
Nehmen wir mal an die Argumente wären nur 'test argument'.
Nun will ich rarlab mit den Argumenten wie folgt starten: "rarlab test argument"
Das Beispiel wie es du mir gegeben hast, startet aber so: rarlab "test argument"
Das funktioniert leider so nicht...
Linus
Re Borg!
Das funktioniert so nicht. Die Anführungsstriche müssen schon vor der Datei beginnen, nicht erst nach der Datei vor den Argumenten...
Trotzdem Danke für die Idee...
Herbivore, hast du noch ne Idee?
Gruß
Re!
Ich komm leider nicht mit dem @ klar, """ habe ich zuvor schoneinmal verwendet. Ich habs nun wie folgt:
RAR.StartInfo.FileName = (@"\" + rarlab);
RAR.StartInfo.Arguments = (" " + rarpar + " " + bckdir + "\\" + text[i] + ".rar " + bcktmp + "\\" + text[i] + "\"");
Das @ hab ich in unterschiedlicher Form schon in der ersten Zeile verbaut - scheint aber jedes mal falsch zu sein.
Das """ hab ich in der zweiten Zeile ganz am Schluss verbaut.
Wie gesagt, mit dem @ hab ich wohl noch meine Probleme. Wie geht das denn genau?
Gruß, Linus
Tag Leute
Im Moment führe ich ein externes Programm wie folg aus:
Process RAR = new Process();
RAR.StartInfo.FileName = rarlab;
RAR.StartInfo.Arguments = (" " + rarpar + " " + bckdir + "\\" + text[i] + ".rar " + bcktmp + "\\" + text[i]);
RAR.Start();
RAR.WaitForExit();
Allerdings können die Parameter (Arguments) wie bckdir und/oder text leerzeichen enthalten und dann werden die Parameter nicht vollständig genommen.
In der Kommandozeile würde man die komplette Zeile einfach in " (Anführungsstriche) setzen... ihr kennt das ja.
Wie kann ich das Problem hier in c# lösen?
Gruß und thx in advance, Linus
Tag Leute!
Ich habe einen C# Code und würde diesen gerne eine Text Box ausfüllen lassen. Nun hab ich aber leider keine Idee wie ich den Code in InfoPath 2007 einbinde. Leider findet sich auch im Internet zu dem Thema (noch) kaum etwas...
Habt ihr mir Tips?
Gruß und Dank im Voraus
Big THX
Manchmal ist es zu einfach...
Gruß
... wie ich dem Projekt ne Referenz auf die Assembly 'System.DirectoryServices' zufüge.
Re!
Ich hab mich ne Weile durchgelesen, weiß aber nicht wie ich das machen soll. Kann mir wer nen Tip geben?
Gruß, Linus
Tag Leute!
Irgendwie steh ich grad mitten im dichten Wald und kommt nicht mehr raus.
Ich schreibe eine Konsolenanwendung und verwende folgendes:
using System.DirectoryServices;
Beim debuggen mosert er mir, markiert DirectoryServices und sagt 'Der Typ- oder Namespacename DirectoryServices ist im Namespace System nicht vorhanden.'
Könnt ihr mir sagen warum?
Gruß
Guten Morgen Leute
Kann mir wer sagen warum die Ausgabe nicht richtig ist?
Gruß, Linus
Folgendes funktioniert:
String str = OUTP;
char[] b = new char[50];
StringReader sr1 = new StringReader(str);
sr1.Read(b, 0, 34);
sr1.Read(b, 0, 50);
Console.WriteLine(b);
sr1.Close();
ABER die Ausgabe passt nicht mehr:
String str sieht so aus: Hier steht dann ein Testergebiss: BD.FileDoor.1
Die Ausgabe sieht so aus: BD.FileDoor.1nn ein Testergebiss:
Das ist nicht gewollt. Woher komm plötzlich 'nn ein Testergebiss:'?
Linus
Original von typhos
Kannst Du nicht einfachsr1.Read(b, 5, 29);
schreiben?
Nein, das geht leider nicht. Wenn ich statt der 0 die 5 eingebe, wird der Anfang der Zeile bei WriteLine um fünf Leerstellen verschoben...
Re!
Du meinst also so:
String str = OUTP;
char[] b = new char[34];
StringReader sr1 = new StringReader(str);
sr1.Read(b, 0, 5);
sr1.Read(b, 0, 34);
Console.WriteLine(b);
sr1.Close();
??
Linus
Tag Leute!
Ich bastel seit ner Weile mit dem StringReader herum. Sieht bisher wie folgt aus:
String str = OUTP;
char[] b = new char[34];
StringReader sr1 = new StringReader(str);
sr1.Read(b, 0, 34);
Console.WriteLine();
sr1.Close();
Das funktioniert auch recht gut soweit. Nur komm ich leider nicht dahinter wie ich angeben kann dass er erst ab Charakter 5 anfangen lesen soll...
Lord Hessia, trotzdem THX für die detailierte Analyse... 🙂
Ich hab dashier verbaut:
if (OUTP != null && OUTP.Contains(input) &! OUTP.Contains("**GetWire"))
Gruß, Linus
Tag Leute!
Eingehend getestet, & !OUTP... funktioniert hervorragend.
Gruß Linus
Re Leute!
Hier mein vorerst letztes Ergebnis.
using (StreamReader outp = new StreamReader("c:\\file.txt"))
{
int a = 0;
string OUTP = string.Empty;
do
{
OUTP = outp.ReadLine();
if (OUTP != null)
{
if (OUTP.Contains(input) &! OUTP.Contains("textbaustein"))
{
Console.WriteLine(OUTP);
Console.WriteLine();
a++;
}
}
}
while (OUTP != null);
Console.WriteLine(a + " Results");
}
Ich hab noch mit eingebaut, dass er alle Zeilen welche den String 'textbaustein' enthalten auslassen soll.
Kann man bestimmt noch anders machen. Aber es funktioniert endlich...
Gruß, Linus
ps.: dabei fällt mir auf, dass man die beiden if noch zusammen basteln könnte 🙂
Lord Hessia,
habs nun so gemacht:
while (outp.ReadLine() != null)
Ich bin nah dran... Nun kommt er mir wieder mit ner affigen NullReferenceException in meiner IF-Anweisung... Ich versuchs weiter!!!
Gruß, Linus
Nein, bin noch dran... es wird. Wenns final ist, poste ich mein Ergebnis... wennnnns final ist
Original von nils
Original von Linus
*tilt*vielleicht sollte ich nicht alles lesen...
sorry, jetzt wir dich wohl ein bisschen zu viel verwirrt, oder wie ist tilt zu verstehen.....
... arg verwirrt. OUHA, ich hab da eben ewig an der Sache herum gemacht über die nun heraus kam, dass sie nicht funktioniert...
*tilt*
vielleicht sollte ich nicht alles lesen...
Nach dem verlängerten Wochenende...
Guten Tag Leute!
Vielen Dank für euren Input... Werd mich gleich wieder ran machen...
Linus
THX VizOne, THX MarsStein...
*Ganz große Birne an geht und die Umgebung erleuchtet*
Lord Hesia
Zu 1: Das mit dem int ausgeben ignorieren, das wollte ich vor dem Posting noch heraus nehmen, habs vergessen....
Zu 2: Die exception werf ich, weil er es so von mir will. Wenn ich es nicht mache, meckert er...
Zu 3: Ne, aber es scheint zu funktionieren...
Zu 4: Das hab ich schon öfert gehört. Ich werde die Sache mit dem Goto auch weg machen. Aber im Moment habe ich noch das Problem mit den 107 Zeilen...
Linus
Nagut, zeigen werd ich euch noch lange nichts, wahrscheinlich auch in ferner Zukunft nicht... zumindest im Berreich C#...
Im folgenden beziehe ich mich auf Zeile lesen... und ich verblöde schließlich
Entgegen jeglicher Erwartungen trug die Konversation mit 'herbivore','VizOne' und 'DCoder' doch Früchte und jeder einzelne von euch hat mir weiter geholfen. An dieser Stelle (an der anderen Stelle gehts ja nemmer 😉 ), Vielen Dank!!!
Heute morgen frisch ans Werk, angreifende Aussagen eines 'Borg' hart an mir abprallen lassen (sollte er mich nicht eher assimilieren und ins Kollektiv einbinden?) und mutig an den Code. Mit den Tips vom Vortag über ein paar Stunden weg viel probiert, gebastelt und erreicht. Das sollte wiederlegen, dass ich nur darauf warte fertigen Code vorgesetzt zu bekommen, zumal, ich wiederhole mich, ich schon ein paar andere Programme geschrieben habe. Kurz und gut, ich habe das Programm funktionsfähig zur Hand, mit nur noch einem Bug.
Reminder:
Das Programm soll in einer Textdatei alle Zeilen nach einem String durchsuchen und die Zeilen, welche diesen String enthalten, ausgeben.
Der Bug:
Er hört nach der 107. Zeile auf.
Ich denke, ihr hättet das alles anders gelöst, ich bin aber froh, dass ich es mit meinem Wissen soweit gebracht habe. Hier der Code:
namespace GetWire
{
class Program
{
static void Main(string[] args)
{
Start:
Console.Clear();
Console.WriteLine("Enter your search criteria (case sensitive):");
Console.WriteLine();
string input = Console.ReadLine();
Console.WriteLine();
Console.WriteLine("Searching for '" + input + "' ...");
Console.WriteLine();
try
{
using (StreamReader outp = new StreamReader("c:\\file.txt"), )
{
int a = 0;
foreach (int i in outp.ReadLine())
{
String OUTP;
OUTP = outp.ReadLine();
try
{
if (OUTP.Contains(input))
{
Console.WriteLine(OUTP);
Console.WriteLine();
Console.WriteLine(i);
a++;
throw new NullReferenceException();
}
}
catch (NullReferenceException) {}
finally { }
}
Console.WriteLine();
Console.WriteLine(a++ + " Results");
}
}
catch (FileNotFoundException exc)
{
Console.WriteLine("Database not found!!!");
Console.WriteLine();
Console.WriteLine("Press any key to exit ...");
Console.ReadKey(true);
return;
}
Console.WriteLine();
Console.WriteLine("Done! Any key for new search, strg + c to exit ...");
Console.ReadKey(true);
goto Start;
}
}
}
Ich kann hier leider nichts sehen warum er nach Zeile 107 die Schleife beendet.
Seht ihr was?
Gruß
The Rising C# Star, Linus
Hm, Danke Leute für eure Mühe. Ich gebs auf, ich kanns einfach nicht...
Bis die Tage
Re!
Das müsste doch auch ohne IndexOf gehen oder? Zumal kenn ich mich damit noch ganricht aus. Ich komm einfach nicht weiter und sitzt schon einige stunden an diesem simplen ding welches ich einfach nicht hin bekommen kann...
Im Moment liest mir das Programm eine Zeile ein und zwar diese welche 'Zeile 1' trägt. Mehr oder weniger darf aber auch nicht drin stehen da es sonst wieder nicht funktioniert... es verläuft sich dann irgendwie.
No idea anymore... hier der Code;
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetWire
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("GetWire");
string input = "zeile 1";
// string output = "";
try
{
using (StreamReader outp = new StreamReader("c:\\file.txt"))
{
String OUTP;
OUTP = outp.ReadLine();
while (OUTP != input)
{
OUTP = outp.ReadLine();
}
input = OUTP;
Console.WriteLine(input);
}
}
catch (FileNotFoundException exc)
{
Console.WriteLine("File " + exc.FileName + " could not be found. Please ensure the file is present and configured. Please refer to readme.txt for further help.");
Console.WriteLine();
Console.WriteLine("Press any key to Exit ...");
Console.ReadKey(true);
return;
}
Console.ReadKey(true);
}
}
}
Re!
Wieder ich. Habs abgeändert, zeigt aber nichts an... 😦 Warum?
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetWire
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("GetWire");
string input = "zeile";
string output = "";
try
{
using (StreamReader outp = new StreamReader("c:\\file.txt"))
{
String OUTP;
OUTP = outp.ReadLine();
while (OUTP != input)
{
OUTP = outp.ReadLine();
}
Console.WriteLine(OUTP);
}
}
catch (FileNotFoundException exc)
{
Console.WriteLine("File " + exc.FileName + " could not be found. Please ensure the file is present and configured. Please refer to readme.txt for further help.");
Console.WriteLine();
Console.WriteLine("Press any key to Exit ...");
Console.ReadKey(true);
return;
}
Console.ReadKey(true);
}
}
}
Tag Jungs!
Ich will was ganz einfaches, funktionieren wills aber null. Tutorials hab ich schon durchgelsen UND ich hab schonmal was ähnliches gebastelt das funktionierte. Dieses mal geht es nicht weil ichs nicht drauf hab.
Das Programm soll alle Zeilen in einer Datei lesen und alle in denen der string 'Zeile' vorkommt, soll ausgegeben werden.
Anbei ist der Code welchen ich schon gebastelt hab. Funktioniert so aber null. Da sind kompliziertere Sachen einfacher... fuchsteufelswild modus :
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace GetWire
{
class Program
{
static void Main(string[] args)
{
string input = "zeile";
try
{
using (StreamReader outp = new StreamReader("c:\\file.txt"))
{
String OUTP;
OUTP = outp.ReadLine();
foreach (int test in outp.ReadLine())
{
while (OUTP != input)
{
OUTP = outp.ReadLine();
}
}
}
}
catch (FileNotFoundException exc)
{
Console.WriteLine("File " + exc.FileName + " could not be found.");
Console.ReadKey(true);
return;
}
Console.ReadKey(true);
}
}
}
Gruß, Linus