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
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, 4256 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

C und C++
gelöst In einer Windows Form Anwendung per Button eine Datei kopieren (4)

Frage von Knuefi zum Thema C und C ...

Batch & Shell
gelöst Powershell Datei kopieren mit ACL Script funktioniert nicht (4)

Frage von xpxy15 zum Thema Batch & Shell ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...