Batch String variabler Länge zusammensetzen oder m

Gast #5806286
Lesenswert?

Hi,
ich muss mit einem Batch folgendes machen.
User gibt eine Zahl ein, die zwischen 3 und 10 Zeichen lang ist.
Ist die Zahl kürzer als 10 muss der Rest mit dem Zeichen * aufgefüllt 
und in eine Datei geschrieben werden.
Die Anzahl der eingegebenen Zeichen kann ich bestimmen. Aber wie kriegt 
man dieses zusammensetzen hin? Oder das Schreiben der richtigen Anzahl 
von * in die Datei?
Bsp.
Eingabe: 12345   In der Datei soll dann stehen 12345*****
Eingabe: 1234567 In der Datei soll dann stehen 1234567***

Gruß
Paul
Gast #5806364
Lesenswert?

Falls das jemand mal noch für bash statt batch mit beliebigem 
füllzeichen und länge braucht, hier wäre noch eine Methode:
1
#!/bin/bash
2

3
# Funktion um nachfolgende Auffüllzeichen einzufügen
4
pad(){
5
  c="$1"
6
  n="$2"
7
  s="$3"
8
  # Funktionsabbruch falls 2tes Argument keine Zahl
9
  [ -n "$n" ] && [ "$n" -eq "$n" ] || return 1
10
  # Text ohne newline ausgeben
11
  printf "%s" "$s"
12
  i="${#s}"
13
  # Füllzeichen ausgeben
14
  while [ "$i" -lt "$n" ]
15
  do
16
    echo -n "$c";
17
    i=$(($i + 1))
18
  done
19
  # Abschliessendes newline wieder ausgeben
20
  echo
21
}
22

23
# 10 Zeichen einlesen
24
n=10
25
read -n "$n" input # Grosses -N stat -n für enter ignorieren
26
[ "${#input}" != "$n" ] || echo $? # Manuelles newline falls nicht bei <10 Zeichen enter gedrückt wurde
27

28
# Eingabe mit n Füllzeichen ausgeben
29
pad "*" "$n" "$input"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren