Ratkaistu bat-tiedoston tulos txt-tiedostoon?

Liittynyt
18.10.2016
Viestejä
1 429
Koodi:
@echo off
echo Checking your system infor, Please wating...
systeminfo | findstr /c:"Host Name"
systeminfo | findstr /c:"Domain"
systeminfo | findstr /c:"OS Name"
systeminfo | findstr /c:"OS Version"
systeminfo | findstr /c:"System Manufacturer"
systeminfo | findstr /c:"System Model"
systeminfo | findstr /c:"System type"
systeminfo | findstr /c:"Total Physical Memory"
ipconfig | find /i "IPv4"

echo.

echo Hard Drive Space:
wmic diskdrive GET index,caption,name,size /format:table

echo.

echo Service Tag:
wmic bios get serialnumber

echo.
echo CPU:
wmic cpu get name

echo Completed! Thank you!

pause

Eli yllä olevan bat-tiedoston tulos pitäisi saada txt-tiedostoon jonka nimi olisi result.%päivä%.%aika%.txt
 
@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0

:Logit
:: The rest of your code
:: ....

Yllä olevasta editoimaan eteenpäin
 
Koodi:
@echo off

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~6,2%-%ldt:~4,2%-%ldt:~0,4%-%ldt:~8,2%.%ldt:~10,2%.%ldt:~12,2%
set output=result.%ldt%.txt


echo Checking your system infor, Please wating...
systeminfo | findstr /c:"Host Name" >>%output%
systeminfo | findstr /c:"Domain" >>%output%
systeminfo | findstr /c:"OS Name" >>%output%
systeminfo | findstr /c:"OS Version" >>%output%
systeminfo | findstr /c:"System Manufacturer" >>%output%
systeminfo | findstr /c:"System Model" >>%output%
systeminfo | findstr /c:"System type" >>%output%
systeminfo | findstr /c:"Total Physical Memory" >>%output%
ipconfig | find /i "IPv4" >>%output%

echo.

echo Hard Drive Space: >>%output%
wmic diskdrive GET index,caption,name,size /format:table  >>%output%

echo.

echo Service Tag: >>%output%
wmic bios get serialnumber >>%output%

echo.
echo CPU: >>%output%
wmic cpu get name >>%output%

echo Completed! Thank you!

pause

Tosin tuo tulostus näyttää jännältä, mutta äkkiseltään noin...
 
Koodi:
@Echo off
SET LOGFILE="MyLogFile %DATE% %RANDOM%.txt"
call :Logit >> %LOGFILE%
exit /b 0

:Logit
systeminfo | findstr /c:"Host Name"
systeminfo | findstr /c:"Domain"
systeminfo | findstr /c:"OS Name"
systeminfo | findstr /c:"OS Version"
systeminfo | findstr /c:"System Manufacturer"
systeminfo | findstr /c:"System Model"
systeminfo | findstr /c:"System type"
systeminfo | findstr /c:"Total Physical Memory"
ipconfig | find /i "IPv4"

echo.
echo Hard Drive Space:
wmic diskdrive GET index,caption,name,size /format:table | sort

echo Service Tag:
wmic bios get serialnumber | sort

echo CPU:
wmic cpu get name | sort

" | sort" joutui lisäämään wmic komennon jälkeen että tulos tulee ANSI koodauksella.
 
Koodi:
@Echo off
SET LOGFILE="CPU MyLogFile %DATE% %Time%.txt"
call :Logit >> %LOGFILE%
start notepad %LOGFILE%
exit /b 0

:Logit
systeminfo | findstr /b /c:"Host Name" /c:"Domain" /c:"OS Name" /c:"OS Version" /c:"System Manufacturer" /c:"System Model" /c:"System Type" /c:"Total Physical Memory"

ipconfig | findstr "IPv4"
echo.
echo Hard Drive Space: 
wmic diskdrive GET index,caption,name,size /format:table | findstr /r /v "^$"
echo.
echo Service Tag: 
wmic bios get serialnumber | findstr /r /v "^$ SerialNumber"|sort
echo.
echo CPU: 
wmic cpu get name | findstr /r /v "^$ Name"|sort
echo.
echo GPU:
wmic PATH Win32_videocontroller GET name | findstr /r /v "^$ Name"|sort

Kommentteja miten tästä saisi paremman?
 
Koodi:
@echo off

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~6,2%-%ldt:~4,2%-%ldt:~0,4%-%ldt:~8,2%.%ldt:~10,2%.%ldt:~12,2%
Kiitos tästä. Olen muodostanut aina ennen tiedostonimeen päiväyksen ja ajan hankalasti GnuWin32 datella, mutta tässähän oli toimiva tapa. Mennyt kyllä tämä(kin) ohi. Kiitos.

Eli yllä olevan bat-tiedoston tulos pitäisi saada txt-tiedostoon jonka nimi olisi result.%päivä%.%aika%.txt
Vielä alkup. asiaan, mielestäni kannattaisi järjestää päiväys nimeen muodossa vuosi-kk-pp-tt-mm (muotoseikkoja sitten muuten, mutta järjestys suurimmasta pienempään). Mutta tämä oma mielipide.
 
Viimeksi muokattu:
Jos lokin aikaleimalla on väliä niin ilman muuta yyyymmddhhmiss halutuilla välimerkeillä jolloin menee aakkostettaessa aikajärjestykseen.
Itse en yleensä käytä välilyöntejä kun battien lainausten käsittely ei ole ihan parhaasta päästä varsinkin jos jotain otetaan parametrina...

Onelinerien sijaan laittaisin for ... do (
)
Samoin if ... (
)
Niin tulee selkeämmin esille missä kohtaa vaihtuu, helpompi lukea.

Miten muuten haluaisit tuosta paremman ?
Nopeampi ?
Jotain muuta ?
 

Uusimmat viestit

Statistiikka

Viestiketjuista
258 204
Viestejä
4 494 202
Jäsenet
74 073
Uusin jäsen
Quokka

Hinta.fi

Back
Ylös Bottom