Top-Themen

Aktuelle Themen (A bis Z)

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
GELÖST

Datei kopieren mit Aufforderung zur Namensvergabe

Frage Entwicklung Batch & Shell

Mitglied: muhkuh007

muhkuh007 (Level 1) - Jetzt verbinden

01.05.2007, aktualisiert 05.05.2007, 4281 Aufrufe, 9 Kommentare

Hallo

bin Programmiersprachentechnisch eine Null (nur Turbopascal...) also bitte nach möglichkeit eine idioteneinfache beantwortung folgender frage:

ich benötige ein skript welches mir eine bereits vorhandene datei kopiert und mich auffordert, einen neuen dateinamen zu vergeben. die dateiendung soll gleichbleiben, auch der ordner der quell und zieldatei ist identisch. das alles soll nur nach ausführen passieren (also keine automatik) und möglich benutzerfreundlich

bin für jede anregung dankbar,

beste grüße,
muhkuh007
Mitglied: bastla
01.05.2007 um 21:40 Uhr
Hallo muhkuh007 und willkommen im Forum!

Wenn ich einmal davon ausgehe, dass Du Windows verwendest, solltest Du mit der folgenden Batchdatei Deine Anforderung umsetzen können:
01.
@echo off 
02.
set /p "Neu=Neuer Name? " 
03.
copy %1 "%~dp1%Neu%%~x1"
Zur Verwendung: Zunächst die 3 Codezeilen mit einem Texteditor als "Kopiere.bat" speichern (Achtung beim Windows-eigenen Editor: dort musst Du zum Speichern als ".bat" zunächst den Dateityp auf "Alle Dateien" ändern und dann den Namen unter Anführungszeichen eingeben, sonst wird ein ".txt" angefügt).

Am einfachsten ist es, die Batchdatei auf dem Desktop abzulegen und die zu kopierende Datei auf die Batchdatei zu ziehen oder die Batchdatei im Ordner "Send To" des Benutzerprofiles (normalerweise "C:\Dokumente und Einstellungen\Benutzername\Send To") zu speichern und über das Kontextmenü mit "Senden an ..." aufzurufen.

Grüße
bastla

[Edit] Speicherhinweise hinzugefügt [/Edit]
Bitte warten ..
Mitglied: Biber
02.05.2007 um 07:47 Uhr
Moin muhkuh007,

willkommen auch von mir.

Nur als marginaler Verbesserungsvorschlag zu bastlas Lösung:

01.
::---------snipp CopyWPrompt.bat 
02.
@echo off 
03.
set /p "Neu=Neuer Name für %~n1[%~x1]? " 
04.
copy "%1" "%~dp1%Neu%%~x1" 
05.
::---------snapp CopyWPrompt.bat
Ergibt dann so etwas als Benutzerrückfrage:
01.
>CopyWPrompt.bat test.txt 
02.
Neuer Name für test[.txt]? test3008 
03.
-----------> copy "test.txt" "E:\test3008.txt"
Gruss
Biber
Bitte warten ..
Mitglied: muhkuh007
02.05.2007 um 09:36 Uhr
Danke vielmals für die herzliche begrüßung im forum und die schnellen antworten.

grundsätzlich geht das schon so, mein problem ist aber folgendes:

ich kann dem nutzer der kopier und benamsel-funktion nicht dazu anhalten, zum speicherort der originaldatei (das ist IMMER die selbe datei, die immer am gleichen ort liegt - also nur eine einzige datei. da müsste man ja statt der variablendefinition einfach den speicherort angeben können? )zu gelangen, die liegt auf einem server, der user soll von seinem desktop mit diesem skript zugriff auf die originaldatei haben, diese kopieren, einen neuen namen eingeben und öffnen soll es nach möglichkeit die datei auch gleich....

bitte um entschuldigung für die etwas wage ausformulierung im ersten post....
Bitte warten ..
Mitglied: Biber
02.05.2007 um 09:48 Uhr
Moin muhkuh007,

bitte um entschuldigung für die etwas wage ausformulierung im ersten post....
Gewährt. *gg
Aber wenn Du schon dabei bist, das Ganze zu konkretisieren:

- ist der (oder die???) Unterordner denn fest [als UNC-Pfad] vorgegeben?
Oder als Netzlaufwerk gemappt bei allen Usern unter dem gleichen Laufwerksbuchstaben?
Werdee alle Dateien zum Kopieren angeboten oder nur die mit einer bestimmten Endung oder welcher anderen Eigenschaft?
Wie kommt der User auf die eine bestimmte Datei, die er kopieren soll/muss/darf?

Gruss
Biber
Bitte warten ..
Mitglied: muhkuh007
02.05.2007 um 09:56 Uhr
hallihallo.

der ordner findet sich auf einem netzlaufwerk, für alle user x:\files\bap\bap_orig.mdb (wieso ich mdb files kopieren will? ein relativ komplexes datenbankprogramm....das eben öfter neu angelegt werden muss)

es gibt also eine fixe originaldatenbank, die leer ist, und der user soll den neuen datensatz in eine neue datenbank reinschreiben....

eben desshalb soll er nach möglichkeit vom desktop aus die datei im obigen verzeichnis kopieren, neu benennnen und dann gleich damit arbeiten.....

grüße und besten dank, muhkuh007
Bitte warten ..
Mitglied: bastla
02.05.2007 um 10:04 Uhr
@Biber

Ich neige ja dazu, eher zu viele als zu wenige Anführungszeichen zu setzen, aber bei %1 sollte es doch auch ohne gehen (bzw würde ich dann "%~1" verwenden), oder übersehe ich etwas?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
02.05.2007 um 10:45 Uhr
@bastla

Jepp, hast Recht mit "würde ich dann "%~1" verwenden".

Muss ich mir mal abgewöhnen, diese beiläufige Änderung "nebenbei" zu machen...

Gruß
Biber
Bitte warten ..
Mitglied: muhkuh007
02.05.2007 um 13:39 Uhr
ich hab mich da jetzt selber ein bisserl gespielt und folgendes zustande gebracht:

@echo off
set programm="C:\WINDOWS\notepad.exe"
set /p "Neu=Bitte gib den Namen der Datei ein!"

copy "C:\test.txt" "C:\%~dp1%Neu%.txt"

start %programm% "C:\%~dp1%Neu%.txt"

if ERRORLEVEL 1 (echo Fehler) else (echo OK)


gibts dazu verbesserungsvorschläge, weil grundätzlich funktioniert das wunderbar so.... aber ich bin nicht der experte!

grüße muhkuh007
Bitte warten ..
Mitglied: bastla
02.05.2007 um 18:17 Uhr
Hallo muhkuh007!

Bis der Experte vorbeikommt, kurze Anmerkungen von mir :
  • Auch wenn es anscheinend keine Konvention für die Vergabe des neuen Namens gibt, würde ich die Eingabe trotzdem darauf prüfen, ob sie unerwünschte Zeichen enthält oder "leer" ist und ansonsten den Erfolg des "copy" untersuchen (nicht erst nach dem Starten der Anwendung prüfen).
  • (Wenn dem Dateityp eine Standardanwendung zugeordnet ist, kannst Du das "Programm" auch weglassen und die Datendatei selbst "starten" - entspricht einem Doppelklick im Explorer.)
  • Da Du mit %1 weiterhin die Übergabe eines Argumentes voraussetzt, wäre eigentlich der gesamte "copy"-Befehl variabel.
Analog zu oben könnte das Ganze dann etwa so aussehen:
01.
@echo off & setlocal 
02.
set "programm=C:\WINDOWS\notepad.exe" 
03.
set /p "Neu=Bitte gib den Namen der Datei ein!" 
04.
set "Neu=%Neu:\=%" 
05.
if "%Neu%" neq "" copy "%~1" >nul 2>nul "%~dp1%Neu%%~x1" && start "Fenstername" "%programm%" "%~dp1%Neu%%~x1" & goto :eof 
06.
echo Fehler 
07.
pause
Der Aufruf (zB in der Verknüpfung) könnte dann mit
01.
Kopiere.bat "C:\test.txt"
erfolgen.

Vorweg zu den Anführungszeichen (beim Aufruf, im Batch für %1 oder den Programmnamen): Da in Deinen als Beispiel gewählten Dateinamen/Pfaden keine Leerzeichen enthalten sind, könntest Du darauf verzichten, die angeführten Dateien/Pfade unter Anführungszeichen zu setzen. Da sie andererseits auch (meistens - Achtung etwa bei der "start"-Anweisung, siehe Hilfe) nicht schaden, habe ich mir angewöhnt, sie dennoch zu verwenden. Für das Argument %1 schreibe ich dann "%~1", wodurch zunächst die Anführungszeichen entfernt und dann auf jeden Fall wieder gesetzt werden - so erreiche ich einen definierten Zustand des übergebenen Arguments %1. Ohnehin Pflicht sind sie für den neuen Namen, da vom Benutzer eingegebene Leerzeichen in die Variable %Neu% übernommen werden.

Das neu hinzugefügte "setlocal" ist besonders beim Testen nützlich, weil dadurch die von Dir gesetzten Variablen "lokal" werden (also beim nächsten Testlauf zunächst nicht vorhanden sind).

Mit der Zeile set Neu=%Neu:\=% werden aus dem neu eingegebenen Namen alle ev enthaltenen "\" entfernt - mit der gleichen Technik könntest Du auch andere unwillkommene Zeichen eliminieren (wobei sich dann vielleicht vor dem Kopieren eine Anzeige des "gesäuberten" Dateinamens und Rückfrage, ob dieser verwendet werden soll, anbieten würde).

Die Umleitungen ">nul" und "2>nul" sorgen dafür, dass die Meldungen des "copy"-Befehles (bei Erfolg bzw bei Fehler) nicht ausgegeben werden.

Die Schreibweise "&&" entspricht einem "if errorlevel 0" - die folgende Anweisung wird also nur ausgeführt, wenn die vorherige Anweisung ohne Fehler beendet wurde.

Das "goto :eof" entspricht dem Ende eines (Unter-)Programms.

Grüße
bastla

P.S.: Gelegentlich schreibe ich längere Kommentare, und besonders, aber nicht ausschließlich, dann versuche ich, durch die gelegentliche Verwendung von Großbuchstaben die Lesbarkeit zu verbessern ...
Bitte warten ..
Ähnliche Inhalte
LAN, WAN, Wireless
WLAN Namensvergabe
Frage von MasterSchlumpfLAN, WAN, Wireless7 Kommentare

Hallo Community, wir sind derzeit damit Beschäftigt eine WLAN Infrastruktur in unserem Unternehmen aufzubauen (gab es vorher noch nicht). ...

Windows 10
Aufforderung zum neustart
gelöst Frage von 94451Windows 105 Kommentare

Ich weiß, die meisten hassen es, ich aber brauch es kennt jemand die Möglichkeit den Update-trigger "Ihr PC muss ...

Verschlüsselung & Zertifikate
Kann man eine TPM-Reset-Aufforderung widerrufen?
Frage von DerWoWussteVerschlüsselung & Zertifikate4 Kommentare

Moin Kollegen. Vorweg: ich frage nicht, ob man nach einem TPM-Reset wieder die alten inhalte des TPMs wiederbeleben kann, ...

Microsoft
Dateien kopieren
gelöst Frage von alex53842Microsoft2 Kommentare

Hallo zusammen, wir haben hier ein sehr tolles Phänomen. Eines unserer Dokumentenarchive hat einen kleinen Fehler. Es wurde eingerichtet ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 7 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 7 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1011 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell22 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen18 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...