Avatar billede xion Nybegynder
22. maj 2004 - 21:49 Der er 10 kommentarer

Script til at overskrive linie 5 og 7 i tekst fil.

Er der et dos-util / kommando jeg kan bruge til at overskrive bestemte linier i en tekst fil.

Krav:
1.: Skal kunne køre i fra et share (må ikke være et prg. der skal installeres på pc'ere
2.: Skal kunne køre på Win2000, XP, Win2003.
Avatar billede bertelbrander Praktikant
22. maj 2004 - 23:40 #1
Der findes ingen standard Win2000 programmer der kan gøre det med alle former for text filer.

Hvis man er sikker på at filerne ikke indeholder bestemte tegn kan man godt lave et lille batch script der vil kunne køre på alle tre systemer.

Hvordan ser filerne ud?
Avatar billede xion Nybegynder
23. maj 2004 - 03:37 #2
Filerne indeholder specielle tegn, her er lidt af en fil:

A:hover { text-decoration: underline }
TD { font: 80% verdana, arial; color: #000000; vertical-align: text-center; text-align: left }
TD.cr { font: 80% verdana, arial; color: #000000; vertical-align: text-center; text-align: right }
TD.cc { font: 80% verdana, arial; color: #000000; vertical-align: text-center; text-align: center }
TD.pt { font: bold 140% verdana, arial; color: #000080; vertical-align: text-center }
TD.dt { font: bold 110% verdana, arial; color: #000080; vertical-align: text-center }
Avatar billede roenving Novice
23. maj 2004 - 03:45 #3
Kan du så ikke bare bruge css' egenskaber til at overskrive virkningerne ?-)
Avatar billede xion Nybegynder
23. maj 2004 - 03:49 #4
Hmmm, tjaa tjoo kun hvis jeg kan køre det fra dos-script.
Avatar billede roenving Novice
23. maj 2004 - 03:56 #5
Hvis du tilføjer de to linjer fra en fil kan der jo være hvadsomhelst i filen, og du skal så bare sørge for, at de samme properties er nævnt, så vil de blive overskrevet, f.eks. ud fra dit eksempel:

En fil, f.eks. nycss.txt, og den, du viser som css.css

TD.pt { font: inherit; color: inherit; vertical-align: inherit }

copy nycss.txt >> css.css
Avatar billede xion Nybegynder
23. maj 2004 - 04:00 #6
Ikke sikker på jeg ved hvad du mener, jeg har intet forstand på www kode, det jeg ved er at jeg ikke kan pille ved filens indhold, den er som den er når den kommer ud, det jeg så vil er at ændre den efterfølgende.
Avatar billede roenving Novice
23. maj 2004 - 04:09 #7
Hvis den samme ting står to gange i en css-fil, vil kun den sidste forekomst af en property på en selector have virkning ...

f.eks. vil dette give en tynd rød kant på tabelceller:

td{border:100px solid green;}
td{border:1px solid red;}
Avatar billede xion Nybegynder
23. maj 2004 - 04:15 #8
Okay, hvad så hvis der er disse linier:

<TR><TD><TD><TD><IMG SRC=3D><TD>MG1&nbsp;&nbsp;<TD>v3.10
<TR><TD><TD><TD><IMG SRC=3D><TD>FX3&nbsp;&nbsp;<TD>v7.50
Avatar billede roenving Novice
23. maj 2004 - 04:35 #9
Det samme nummer kan ikke laves med almindelig html ...

Men måske er den tekst almindelig nok til at bertelbrander kan klare den ?-)
Avatar billede bertelbrander Praktikant
23. maj 2004 - 14:47 #10
Jeg har lavet et lille batch script der ser ud til at virke:

<code>
@echo off
setlocal
if [%1]==[] echo Usage %1 infile outfile &goto :eof
if [%2]==[] goto Usage %1 infile outfile &goto :eof
set OutFile=%2
set NewLine5="Ny linie 5"
set NewLine7="Ny linie 7"
Set SepChar=$
if exist %OutFile% del %OutFile%
set /A LineNumber=0
for /F "delims=%SepChar%" %%I in (%1) do call :Process "%%I"
goto :eof

:Process
set /A LineNr+=1
if %LineNr%==5 (
  echo NewLine5>>%OutFile%
  goto :eof
)
if %LineNr%==7 (
  echo NewLine7>>%OutFile%
  goto :eof
)
echo %~1>>%OutFile%
goto :eof
</code>

Du skal rette linierne:
set NewLine5="Ny linie 5"
set NewLine7="Ny linie 7"
Så der står den rigtige text, der skal være "" omkring.

Hvis du hellere vil angive texten på kommandolinen kan du ændre linierne til:
set NewLine5=%3
set NewLine7=%4
Og så angive texten på kommandolinien som 3. og 4. argument, stadig med "" omkring.

Scriptet går ud fra at der ikke er linier der indeholder ", hvis der er har vi et problem.
Scriptet går også ud fra at der ikke er linier der indeholder $, hvis der er det, skal du ændre linien:
Set SepChar=$
Til at angive anden karakter som ikke findes i nogen linie.

Du gemmer scriptet i en .bat fil, f.ex myfile.bat og bruger det som:
MyFile.bat infile outfile
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester