Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
bufoss
- Posts: 8
- Joined: 22 Nov 2016 13:46
#1
Post
by bufoss » 18 Dec 2016 09:26
Hi all,
I an noobie in batch scripting and I would appreciate if you could help me.
I want to create a script which reads a root path (windows path or svn path),
checking only the .sql files which are inside "Packages" and "Package Bodies" folders.
The script I would like to check if the last line of the .sql file is "/".
When the script changes folder print *******
Could you help me please ?
Thanks in advance
Code: Select all
@echo off&cls
setlocal enabledelayedexpansion
set initialPath=%~dp0
set /p rootPath=Path :
cd %rootPath%
for %%a in (*.sql) do (
for /f "delims=" %%b in ('type "%%a"') do (
set "$Line=%%b"
)
if not "!$Line:~-1!"=="/" (
echo %%~nxa [!$Line:~-1!] =^> Not valid
) else (
echo %%~nxa [!$Line:~-1!] =^> OK
)
echo.^**************
)
cd %initialPath%
:End
endlocal
pause >nul
-
pieh-ejdsch
- Posts: 240
- Joined: 04 Mar 2014 11:14
- Location: germany
#2
Post
by pieh-ejdsch » 21 Dec 2016 15:48
this lines only with Findstring print on Screen.
Code: Select all
@echo off
setlocal disabledelayedexpansion
set prompt=$G$S
::Define LF variable containing a linefeed (0x0A)
(set ^"LF=^
%= Pseudo empty Line =%
)
::Define CR variable containing a carriage return (0x0D)
for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
setlocal enableDelayedExpansion
if "%~1" == "/?" echo ON &call :help &exit /b
if :==:SUB (
:help
rem %~0 "%~f0"
rem Letzte Zeile mit Text ohne Zeilenschaltung ausgeben
findstr /n /v /r /c:^".*^!CR^!^!LF^!*^!CR^!*^!LF^!*^" "%~f0"
rem Letzte Zeile mit Text mit Zeilenschaltung ausgeben
findstr /n /v /r /c:^".*^!CR^!^!LF^!.*^!CR^!^!LF^!*^!CR^!*^!LF^!*^" "%~f0"
rem Letzte Zeile mit Inhalt mit Zeilenschaltung ausgeben.
(type "%~f0" &type nul)|findstr /n . |findstr /v /r /c:^".*^!CR^!^!LF^!.*^!CR^!^!LF^!*^!CR^!*^!LF^!*^" |findstr /r \/$ &&echo OK
rem
exit /b
)
call :sql "Packages" "Package Bodies"
if : equ :SUB (
:sql this ERRORmessages filter 2>nul
rem %~0
set/aFP=0
set "Pipe=>&2 "
for /r %1 %%f in (*.sql )do (
( type "%%f" &type nul ) | findstr /n . | findstr /v /r /c:^".*^!CR^!^!LF^!.*^!CR^!^!LF^!*^!CR^!*^!LF^!*^" | findstr /r \/$ && (
echo %%~nxf / =^> OK
set "pipe="
) || @ >&2 (echo %%~nxf =^> Not valid
)
if "%%~dpf" neq "!FP!" @ %PIPE% (
echo **************
echo "%%~dpf"
set "FP=%%~dpf"
set "Pipe=>&2 "
)
)
if "%~2" neq "" shift & goto :sql
exit /b
)
rem END Script
Exit /b
Testlines
/abcde
xyz / End
000/
/abc
/xyz
22/2
999/
Phil
-
bufoss
- Posts: 8
- Joined: 22 Nov 2016 13:46
#3
Post
by bufoss » 02 Jan 2017 11:56
Thanks a lot for your help