Toon posts:

DOS "shell scripting"

Pagina: 1
Acties:

Verwijderd

Topicstarter
Okee, regelrechte ramp maar kan ff niet anders... Ik zit op mijn werk en we hebben..... windows.... Joepie! :X :X :X

Nu heb ik een stuk of 300 directories (P:\1\ tot P:\300\) met elk rond de 1500 willekeurige bestanden en die moeten allemaal naar c:\temp toe....

Hoe doe ik dat?

Ik dacht aan
code:
1
2
3
4
5
6
i=`dir`
for a in $i
  cd $a
  copy * c:\temp
  cd ..
  done

Maar dat wil niet werken :(

Ik dacht ook nog aan
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc, char* argv[])
{
    char command[512];
    int i;

    for (i=1;i<=200;i++)
    {
        sprintf(command, "copy P:\\%d\\* C:\\temp\\",i);
        printf("%s\n", command);
        system(command);
    }

    return 0;
}

Maar dat werkt ook al niet... DOS is niet echt wat je zegt "geweldig" maar dit is zoooooooo simpel, dat moet toch kunnen :? |:(

Iemand een idee hoe??? :?

  • Wilke
  • Registratie: December 2000
  • Laatst online: 13:11
Ja euh.....dit in Non-windows OS?

Maakt verder niet uit, het moet inderdaad wel kunnen. Als het me lukt hoor je het zo wel!

  • Wilke
  • Registratie: December 2000
  • Laatst online: 13:11
Okee, het lukt dus niet.

Probeer anders een of je 4dos ergens kunt vinden. Dat is een uitbreiding op de standaard DOS-shell die ook in Win 95/Win98 nog wel werkt. Daar kun je een stuk meer mee dan met de standaard command.com.

Er zit als het goed is ook een help bij, waarmee je er vast wel uitkomt...

  • Jordi
  • Registratie: Januari 2000
  • Niet online

Jordi

#1#1

Op vrijdag 10 augustus 2001 15:36 schreef Wilke het volgende:

Ja euh.....dit in Non-windows OS?
Euh, mjah... aan de ene kant hoort DOS bij Windows, aan de andere kant is DOS zo anders dat het hier wellicht beter tot z'n recht komt. Ik denk dat hier meer mensen veel van shell/textmode zaken afweten dan in WOS.

Het zal wel niet, maar het zou maar wel.


Verwijderd

Topicstarter
Ik heb het uiteindelijk maar opgegeven, DOS shell scripting is blijkbaar net zo goed ontwikkeld als de rest van windows ;(

Ik heb het dus maar in C++ geschreven... Mijn code zag er uiteindelijk zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
char *target_dir = "c:\\temp";

void copyfile(char *src, char *dst)
{
    ifstream in;
    ofstream out;
    char temp;

    printf("Copying %s to %s\n", src, dst);

    in.open(src, ifstream::in|ifstream::binary);
    out.open(dst, ofstream::out|ofstream::binary);

    while (!in.eof() && in.good() && out.good())
    {
        in.get(temp);
        out.put(temp);
    }

    in.close();
    out.close();
}

void search_dir(char *directory)
{
    char command[512];
    HANDLE      h;
    BOOL        ok;
    WIN32_FIND_DATA fd;

    printf("Entering directory %s\n", directory);

    sprintf(command, "%s\\*.*", directory);

    for (h =FindFirstFile(command, &fd), ok=1;
         h!=INVALID_HANDLE_VALUE && ok;
         ok=FindNextFile(h, &fd))
    {
        if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY &&
            fd.cFileName[0] != '.')
        {
            char temp[256];
            sprintf(temp, "%s\\%s", directory, fd.cFileName);
            search_dir(temp);
        }
        else
        {
            /* copy */
            char temp[256], temp2[256];
            sprintf(temp, "%s\\%s", directory, fd.cFileName);
            sprintf(temp2, "%s\\%s", target_dir, fd.cFileName);
            copyfile(temp, temp2);
        }
    }

    printf("Leaving directory %s\n", directory);
}

int main(int argc, char* argv[])
{
    search_dir("p:\\");

    return 0;
}

Verwijderd

Ook al is het opgelost ;)
Werkt het volgende niet?
(Heb ik niet getest, aangezien ik te lui ben om DOS op te starten :P )
code:
1
for /f %i in (`dir`) do copy %i\*.* c:\temp

Verwijderd

Topicstarter
Op vrijdag 10 augustus 2001 16:05 schreef nelske het volgende:
Ook al is het opgelost ;)
Werkt het volgende niet?
(Heb ik niet getest, aangezien ik te lui ben om DOS op te starten :P )
code:
1
for /f %i in (`dir`) do copy %i\*.* c:\temp
Windows snapt `commando` al niet eens..... :( :( :( Nee dus....

  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

Dit geeft een heel nieuwe inhoud aan de term 'windows bashing' :)

for /F %i in ('dir /B') do copy %i\*.* c:\temp

doet het hier (NT/2K) trouwens prima, en zou onder 9x ook moeten werken.

Whenever you find that you are on the side of the majority, it is time to reform.


  • Wilke
  • Registratie: December 2000
  • Laatst online: 13:11
Het werkt onder 9x dus niet. In ieder geval niet onder Win98 SE.

Maar goed, het probleem was al opgelost, dus >:)

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Op zaterdag 11 augustus 2001 12:41 schreef Pinball het volgende:
Dit geeft een heel nieuwe inhoud aan de term 'windows bashing' :)

for /F %i in ('dir /B') do copy %i\*.* c:\temp

doet het hier (NT/2K) trouwens prima, en zou onder 9x ook moeten werken.
heb em niet getest maar deze moet wel werken ja (vroeger zelf ook veel van dit soort DOS scripts gemaakt) ...

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!

Pagina: 1