2016-07-20 13 views
-1

Ich versuche, ein Batch-Skript zu schreiben, die prüfen wird, ob es irgendwelche Datei mit, sagen wir zum Beispiel, DLL-Erweiterung und wenn Datei beendet dann sollte es neue Datei mit demselben Namen erstellen aber mit der Erweiterung .txt.Automatisierung der Erstellung neuer Datei im Windows-Ordner

so sagen, ich habe test_12345.dll Datei in Ordnern dann sollte mein Skript sehen, ob diese Ausgänge und eine leere Datei als test_12345.txt erstellen (im Grunde genau die gleichen Namen mit DLL-Datei, aber mit unterschiedlicher Erweiterung)

Kann mir ein Experte helfen, das mit Batch-Skript zu erstellen?

Grüße Sushant

+0

'Existiert! = Exits' ;-) Viel Glück. – shellter

+0

'bash' und' batch' sind zwei verschiedene Dinge. – chepner

Antwort

0

Dies ist das bash Skript. :) Sie könnten dies in bash Umgebung versuchen.

#!/bin/bash 
dirname=$1 
ext=$2 
[ $# -eq 0 ] && { echo "Usage: $0 <path> <ext>" ex: $0 /tmp/ dll ; exit 1; } 
find $dirname -type f -name "*.${ext}" | while read fname 
do 
name=$(dirname $fname)/$(basename $fname .${ext}) 
txtFile=$name.txt 
if [ ! -e "$txtFile" ] ; then 
    touch "$txtFile" 
fi 
done 
0

Dies ist ein Windows-Bat-Skript tun, was Sie brauchen. Scannt alle DLLs im aktuellen Verzeichnis, ändert dann die Erweiterung in .txt und erstellt eine (fast) leere Datei. Vollständige Batch-Native, keine externen Tools verwendet.

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 

for %%b in (*.dll) do (
set v=%%b 
set u=!v:.dll=.txt! 
echo. >!u! 
) 
0

Sie suchen fo eine Lösung Gesetzt, ist es das, was Sie wollen:

for %%F in ("\path\to\folder\*.dll") do (
    > "%%~dpnF.txt" break 
) 

Die for Schleife alle \path\to\folder\.dll Dateien in der angegebenen Position aufzählt (den Teil entfernen, wenn Sie bearbeiten möchten das aktuelle Arbeitsverzeichnis). %%~dpnF wird zum Laufwerk, Pfad und Basisnamen (ohne Erweiterung .dll) des aktuell iterierten Elements erweitert. Der Befehl break tut nichts in modernen Windows-Systemen (es ist nur für Rückwärtskompatibilität mit MS-DOS) und produziert keine Ausgabe, daher verwende ich es, um leere .txt Dateien zu erstellen. echo. gibt einen Zeilenumbruch zurück (also sind die Dateien nicht leer); Außerdem kann die Syntax . unter bestimmten Umständen sogar ein unerwartetes Verhalten verursachen (die Syntax echo( sieht seltsam aus, ist aber sicher).