Bat局域网聊天室--用批处理编的

今天天没事做,玩玩BAT就想起了编这个… 完善中…….
用一台 host 做服务器共享一个文件夹如: server

  1. 在客户机 A 和 B 上 打开user.bat 输入 共享文件夹地址,如: \\fileserver\chatroom
  2. 输入昵称
  3. 输入要聊天、或留言的对象(对方昵称)
  4. 聊天、留言、查看在线用户等操作

原理 是通过共享文件夹的文件操作(列出、读写)通过BAT有限的编程能力(这也是有趣的地方)来完成信息交换

user.bat

1
2
3
4
5
6
7
8
9
title 局域网聊天室--主页 https://yryz.net
color 2f
@mode con lines=20 cols=80
@echo off
echo.&echo.
:server
set server=
set /p server=请输入服务地址:
call server.bat

server.bat

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
dir %server%
cls
echo.
if ERRORLEVEL 1 call user.bat
if "%server%"=="" call user.bat
:n
echo.&echo.
set n=
set /p n= 请输入昵称:
if "%n%"=="" goto n
title 当前用户:%n%
:l
rem 按扩列出文件
echo.
echo ──────────────────────────────────────
echo 当前用户:
echo.
dir %server%\*.info>%server%\list.list
findstr ".info" %server%\list.list >%server%\list.bak
if errorlevel 1 cls&echo 当前没有用户在线,留言请输入对方昵称
for /f "tokens=4 delims=. " %%i in (%server%\list.bak) do @echo %%i
echo ──────────────────────────────────────
pause
IF EXIST %server%\%n%.user (echo 您有新留言,请按 1 进行查收,按其它键稍后再看&echo.&set /p w=请选择:) ELSE goto u
if "%w%"=="1" goto s
:u
echo ──────────────────────────────────────
set u=
set /p u= 输入聊天对象:
if "%u%"=="" goto u
title %n% 与 %u% 聊天中...
echo 用户:%n%>%server%\%n%.info
echo 计算机名:%COMPUTERNAME%>>%server%\%n%.info
cls
:a
echo ──────────────────────────────────────
echo.&echo.
set a=
set /p a= 请输入聊天内容:
if "%a%"=="" goto a
echo.
IF EXIST %server%\%u%.info (echo %n% %date% %time% > %server%\%u%.user) ELSE echo %n%于%date% %time%留言: >> %server%\%u%.user
echo %a% >>%server%\%u%.user
echo ────────────────────────────────────── >>%server%\%u%.user
rem 这里是存储聊天记录
echo %date% %time% >>%server%\bak.bak
echo. >>%server%\bak.bak
echo %n%对%u%说: >>%server%\bak.bak
echo %a% >>%server%\bak.bak
echo ─────────────────── >>%server%\bak.bak
cls
echo.
:s
echo 对方:
echo ──────────────────────────────────────
type %server%\%n%.user
if ERRORLEVEL 1 cls&echo 暂无留言
echo ──────────────────────────────────────
echo 1.刷新 2.回复 3.用户列表 4.查看聊天记录 5.查看对方信息 6.下线
echo ──────────────────────────────────────
echo.
set s=
set /p s= 请选择:
if "%s%"=="1" goto s
if "%s%"=="2" goto a
if "%s%"=="3" goto l
if "%s%"=="4" goto j
if "%s%"=="5" goto info
if "%s%"=="6" goto exit
goto s
:j
cls
echo.
type %server%\bak.bak
echo ──────────────────────────────────────
pause
goto s
cls
:info
cls
type %server%\%u%.info
if ERRORLEVEL 1 cls&echo 对方不在线
echo.
echo ──────────────────────────────────────
pause
goto s
cls
:exit
del /f/q %server%\%n%.info
del /f/q %server%\%n%.user
exit