powershellbefehl in c++ ausführen
-
Ich glaube das Problem ist einfach dass du nicht C++ kannst. Ich hab aber keine Lust das jetzt für dich zu programmieren. Wenn du C++ lernen willst, lern C++. Ansonsten darst du natürlich gerne weiter nach jemandem suchen der das für dich programmiert, aber ich werde mich da nicht beteiligen.
BTW: Wenn es nicht unbedingt C++ sein muss, würde ich dir C# empfehlen. Das ist einfacher zu lernen als C++, speziell wenn du dich mal auf die nötigen Grundlagen beschränkst.
Und Files in einem Verzeichnis zählen ist in C# ein 1-Zeiler.
-
@hustbaer das problem ist das später ein relais angesteuert wird und der im handbuch mit c++ programmiert worden ist deswegen besser wenn es c++ ist
-
- Warum musst du das denn machen?
- Wer hat dir gesagt, dass du das machen musst?
- Warum glaubt derjenige, dass du das kannst?
- Warum kannst du das nicht?
Du hast bisher nicht eine einzige Zeile Code gezeigt, in der du überhaupt irgendetwas versuchst. So wird das hier nix...
Edit:
Oder stell´s in Projekte ein und biete Bezahlung an.
-
@avci sagte in powershellbefehl in c++ ausführen:
@hustbaer das problem ist das später ein relais angesteuert wird und der im handbuch mit c++ programmiert worden ist deswegen besser wenn es c++ ist
Du kannst auch das Zählen mit Powershell machen und aus Powershell heraus ein - zum Beispiel mit C++ erstelltes - Programm aufrufen.
-
@Belli richtig in powershell funktioniert das in 1-2 befehlen. deswegen ja dei frage wie ich ein powershell befehl in c++ ausführen kann
-
@DocShoe
#include <iostream>
#include <windows.h>using namespace std;
int main()
{
WIN32_FIND_DATA FData;HANDLE hSearch = FindFirstFile("x\\y\\z\\", &FData); BOOL MoreFiles = FALSE; int cnt_dir = 0, cnt_file = 0; if (hSearch == INVALID_HANDLE_VALUE) return -1; do { // Ist das ein Ordner ? if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { // Den Ordnernamen ausgeben cout << "(Ordner) " << FData.cFileName << endl; cnt_dir++; // Ordnerzähler um 1 erhöhen } // Wenn nicht else { // Den Dateinamen ausgeben cout << "(Datei) " << FData.cFileName << endl; cnt_file++; // Dateizähler um 1 erhöhen } MoreFiles = FindNextFile(hSearch, &FData); } while (MoreFiles); FindClose(hSearch); cout << endl << "Insgesamt" << endl << "Ordner: " << cnt_dir << endl << "Dateien: " << cnt_file; cin.get(); return 0;
}
das hier ist der code den ich gerade stehen habe komischerweise sagt er dass es nicht funktioniert :Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler (aktiv) E0167 Das Argument vom Typ ""const char *"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel. testhowis C:\Users\PDV\source\repos\testhowis\testhowis\main.cpp 10Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler C2664 "HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)" : Konvertierung von Argument 1 von "const char [7]" in "LPCWSTR" nicht möglich testhowis C:\Users\PDV\source\repos\testhowis\testhowis\main.cpp 10diese fehlermeldung wird mir angezeigt aber auch ist das problem dass er mir nicht nicht alle dateien aufzählt. der code gibt mir nur aus ob der pfad zu einem ordner führt oder zu einer datei
-
@DocShoe hoffe du kannst mir jetzt weiterhelfen
den timer habei ich noch nicht gecodet
-
Dein Projekt ist eine Unicode-Anwendung und erwartet Zeichenketten als
wchar_t*
. Du übergibst sie als ANSI-Zeichenketten. Dazu gibt es jetzt mehrere Lösungen:- du stellst deine Anwendung von Unicode auf ANSI um (muss iwo in den Projekteigenschaften einstellbar sein)
- du übergibst Zeichenketten als
wchar_t*
, indem du den PräfixL
voranstellst, alsoL"x\\y\\Z"
. Oder noch besser, du lässt das den Compiler für dich erledigen, das Visual Studio bietet dafür dasTEXT
Makro, das in Abhänigkeit der Projekteinstellungen entweder einenchar*
oderwchar_t*
zurückgibt (TEXT("x\\y\\z")
). - du rufst explizit die ANSI Varianten der WINAPI Funktionen auf (
FindFirstFileA, FindNextFileA
, etc.)
-
@DocShoe Ich würde eher davon abraten die
_T
/_TEXT
Makros und/oder die "ohne Suffix" Windows Funktionen (Makros) zu verwenden. Ausser in Projekten wo man wirklich eine ANSI und eine UNICODE Konfiguration hat, und diese auch beide regelmässig gebaut und getestet werden. Sonst kommt bloss ein Programm raus was grossteils so aussieht als ob man es mit ANSI und UNICODE bauen könnte, aber in Wirklichkeit funktioniert dann doch bloss eine Variante.Und da es keine relevanten Windows Versionen mehr gibt die die UNICODE APIs nicht unterstützen, wäre mein Rat: Explizit die
W
Funktionen aufrufen und alles mitwchar_t
/L"..."
machen.(Abgesehen davon dass ich persönlich hier vermutlich eher
std::filesystem
verwenden würde.)
-
@avci
Beispiele wie es mitstd::filesystem
geht findest du z.B. hier https://www.bfilipek.com/2019/04/dir-iterate.html#using-c17 und hier https://en.cppreference.com/w/cpp/filesystem/directory_iterator