23-02-2018, 14:06
Hej,
Jeg er ny i forum, så hej med Jer :)
Jeg står med den udfordring at jeg har noget SQL kode som genererer en *.csv fil. Hver gang denne *.csv fil genereres, dannes der en linje i bunden som ikke skal anvendes senere i et forløb. Derfor søger jeg en som kan være behjælpelig med et script (OBS! Skal kunne afvikles i PS eller CMD), som altid kan slette sidste linje i filen, eller sørge for at slette alt data i sidste linje i filen. Jeg er kommet frem til følgende *.bat script, som er hugget direkte fra nettet, hvilket virker. Den sletter dog ikke den sidste linje, men sørger for at slette alt data i den sidste linje, så den står blank.
Ovenstående virker og kan i realiteten bruges, men der er en lille ting som driller. Den *.csv fil (Navnpaafil_230218.csv) får en ny dato i navnet hver dag, med et dato stempel. Derfor har jeg behov for at wildcard, istedet for dato-navnet i scriptet. Jeg har forsøgt med stjerne (*) og spørgsmålstegn (?), dog uden hjælp. Nogen der lige har et skarpt bud på et andet script, eller blot lige kender tricket med at indsætte et wildcard, så vil jeg live meget glad. På forhånd tak.
Jeg er ny i forum, så hej med Jer :)
Jeg står med den udfordring at jeg har noget SQL kode som genererer en *.csv fil. Hver gang denne *.csv fil genereres, dannes der en linje i bunden som ikke skal anvendes senere i et forløb. Derfor søger jeg en som kan være behjælpelig med et script (OBS! Skal kunne afvikles i PS eller CMD), som altid kan slette sidste linje i filen, eller sørge for at slette alt data i sidste linje i filen. Jeg er kommet frem til følgende *.bat script, som er hugget direkte fra nettet, hvilket virker. Den sletter dog ikke den sidste linje, men sørger for at slette alt data i den sidste linje, så den står blank.
Kode:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set "_CSV_FILE=D:\Mappe1\Navnpaafil_230218.csv" & rem // (specify CSV file here; `%~1` is first argument)
set "_NUM_FRST=0" & rem // (specify number of lines to remove from beginning)
set "_NUM_LAST=1" & rem // (specify number of lines to remove from end)
rem // Count number of available lines in file:
for /F %%C in ('^< "%_CSV_FILE%" find /C /V ""') do set /A "COUNT=%%C"
set /A "COUNT-=_NUM_LAST"
rem /* Process file, regarding and maintaining empty lines;
rem lines must be shorter than about 8190 bytes: */
set /A "INDEX=0"
for /F "delims=" %%L in ('findstr /N "^" "%_CSV_FILE%" ^& ^> "%_CSV_FILE%" rem/') do (
set /A "INDEX+=1"
set "LINE=%%L"
setlocal EnableDelayedExpansion
if !INDEX! GTR %_NUM_FRST% if !INDEX! LEQ %COUNT% >> "!_CSV_FILE!" echo(!LINE:*:=!
endlocal
)
endlocal
exit /B
Ovenstående virker og kan i realiteten bruges, men der er en lille ting som driller. Den *.csv fil (Navnpaafil_230218.csv) får en ny dato i navnet hver dag, med et dato stempel. Derfor har jeg behov for at wildcard, istedet for dato-navnet i scriptet. Jeg har forsøgt med stjerne (*) og spørgsmålstegn (?), dog uden hjælp. Nogen der lige har et skarpt bud på et andet script, eller blot lige kender tricket med at indsætte et wildcard, så vil jeg live meget glad. På forhånd tak.