标题: [文本处理] 【已解决】请教大佬帮忙排批处理下错误。 [打印本页]
作者: aaaa25852 时间: 2021-10-5 00:47 标题: 【已解决】请教大佬帮忙排批处理下错误。
本帖最后由 aaaa25852 于 2021-10-5 16:03 编辑
主要是两个命令的组合显示
1. 首先使用‘date /t’得到今天的年月日
2. 通过今天的年月日来遍历目录下今天修改过的文件
如果满足文件修改日期为今天,那么我就把文件信息打印出来。
dir /a:-d | findstr 2021/10/05
我能猜到错误应该是 “findstr !ct! %%x && echo %%x %%y” 这里,但是我不知道该如何修改。。。。。希望大佬教下怎么改。。。。
这是我写的命令- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set var=
-
- for /f "delims=, " %%i in ('date /t') do (
- set var=%%i
- echo !var!
- for /f "delims=, tokens=1,* skip=5" %%x in ('dir /a:-d') do (
- call findstr !var! %%x && echo %%x %%y
- )
- )
- pause
- goto :eof
复制代码
后来我想通过 if 来比较字符串,但是更离谱,直接批处理起不来。。。。。- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set var=
-
- for /f "delims=, " %%i in ('date /t') do (
- set var=%%i
- echo !var!
- for /f "delims=, tokens=1,* skip=5" %%x in ('dir /a:-d') do (
- if /i !var! == %%x(
- echo %%x %%y
- )
- )
- )
- pause
- goto :eof
复制代码
虽然找到【折中】中的方法用文件存储在查找,但是我并不想通过文件中转(霸蛮)能否直接用代码实现吗?- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set var=
-
- del 1.txt
-
- for /f "delims=, tokens=1,* skip=5" %%x in ('dir /a:-d') do (
- echo %%x %%y >> 1.txt
- )
-
- for /f "delims=, " %%i in ('date /t') do (
- set var=%%i
- findstr !var! 1.txt >> 2.txt
- )
-
- pause
- goto :eof
复制代码
但是输出却是- FINDSTR: 无法打开 2021/10/05
- FINDSTR: 无法打开 2021/09/27
- FINDSTR: 无法打开 2021/09/27
- FINDSTR: 无法打开 2021/09/27
- FINDSTR: 无法打开 2021/10/05
- FINDSTR: 无法打开 2021/09/27
- FINDSTR: 无法打开 2021/09/27
- FINDSTR: 无法打开 2021/09/26
- FINDSTR: 无法打开 2021/09/27
- FINDSTR: 无法打开 2021/09/26
- FINDSTR: 无法打开 2021/09/26
- FINDSTR: 无法打开 11
- FINDSTR: 无法打开 个文件
- FINDSTR: 无法打开 26
- FINDSTR: 无法打开 0
- FINDSTR: 无法打开 个目录
- FINDSTR: 无法打开 426
- 请按任意键继续. . .
复制代码
作者: newswan 时间: 2021-10-5 01:05
本帖最后由 newswan 于 2021-10-5 01:11 编辑
- for /f "delims=, " %%i in ('date /t') do (
- set d=%%i
- )
-
- for /f "delims=, tokens=1,* skip=5" %%x in ('dir /a:-d') do (
- echo %%x | findstr %d% && echo %%x %%y
- )
复制代码
用不着findstr- for /f "delims=, tokens=1,* skip=5" %%x in ('dir /a:-d') do (
- if %%x==%d% echo %%x %%y
- )
复制代码
作者: newswan 时间: 2021-10-5 01:07
获取文件修改日期- for /f "usebackq tokens=* delims=" %%a in (`dir /b "*.txt"`) do (
- echo "%%~ta"
- )
复制代码
作者: aaaa25852 时间: 2021-10-5 01:17
回复 2# newswan
为什么我写的 if == 批处理会直接崩溃呢。。。
作者: aaaa25852 时间: 2021-10-5 01:18
回复 3# newswan
没想到凌晨还有大佬逛论坛的。。。
作者: aaaa25852 时间: 2021-10-5 01:22
本帖最后由 aaaa25852 于 2021-10-5 01:35 编辑
回复 2# newswan
厉害了。但是我没想明白为什么我写的if会直接崩溃。。。。- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set var=
-
- for /f "delims=, " %%i in ('date /t') do (
- set var=%%i
- echo !var!
- for /f "delims=, tokens=1,* skip=5" %%x in ('dir /a:-d') do (
- if /i !var! == %%x(
- echo %%x %%y
- )
- )
- )
- pause
- goto :eof
复制代码
------------------
仅仅只是 if 两个比较值写反了就会崩溃。。。。
作者: newswan 时间: 2021-10-5 02:12
本帖最后由 newswan 于 2021-10-5 02:15 编辑
回复 6# aaaa25852
if 后面的括号?加个空格试试
作者: newswan 时间: 2021-10-5 02:18
本帖最后由 newswan 于 2021-10-5 02:30 编辑
最好不要用tab,转成空格,4个就好
tab通常是8个
作者: Fit 时间: 2021-10-5 10:04 标题: 错
本帖最后由 Fit 于 2021-10-5 15:09 编辑
错-------------------------------------------
作者: Fit 时间: 2021-10-5 15:17
第二个for改成这样可以不
for /f "tokens=* " %%x in ('dir /a:-d ^| find "!var!"') do (
echo %%x
)
作者: aaaa25852 时间: 2021-10-5 16:02
回复 8# newswan
感谢抽空答复,问题解决了
作者: aaaa25852 时间: 2021-10-5 16:03
回复 10# Fit
感谢抽空答复,问题解决了
作者: newswan 时间: 2021-10-5 17:35
回复 10# Fit
可以,很好
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |