标题: [文本处理] 根据日期提取文件的bat代码怎么修改? [打印本页]
作者: 7016427 时间: 2015-5-29 14:09 标题: 根据日期提取文件的bat代码怎么修改?
- @echo off&setlocal EnableDelayedExpansion
- set /p x=W外勤/Z主任:
- if /i "%x%"=="w" (set /p d="请输入视频日期,按回车键!(注意日期格式:2015-05-01):"
- cd /d h:\DCIM/100MEDIA\
- for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t *.mov^|findstr /b [0-9]') do (
- if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" echo f | xcopy "%%d" /y e:\视频\外勤\%d%\
- )
- ) else if /i "%x%"=="z" (set /p d="请输入视频日期,按回车键!(注意日期格式:2015/05/01):"
- cd /d h:\DCIM/100MEDIA\
- for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t *.mov^|findstr /b [0-9]') do (
- if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" echo f | xcopy "%%d" /y e:\视频\主任\%d%\
- )
- )
- IF not EXIST "e:\视频\外勤\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
- )
- pause>nul
复制代码
按7楼老师的代码测试,仍然失败!
作者: 7016427 时间: 2015-5-29 14:36 标题: [补充]请高手瞧瞧、看看,这个bat代码怎么修改
[补充]回复 1# 7016427
执行时,黑屏闪一下就过了,不知哪里错?
作者: terse 时间: 2015-5-29 14:50
你检查一下 少了 几个 “)”
作者: 7016427 时间: 2015-5-29 15:35 标题: [修改]根据日期提取文件的bat代码怎么修改?
[修改]回复 3# terse
你好!我添加了几个括号“)"后,可以执行完,但是没有拷贝到文件。
@echo off&setlocal EnableDelayedExpansion
echo 请选择巡检仪
set /p x=W外勤/Z主任:
if /i "%x%"=="w" (
set /p d="请输入视频日期,按回车键盘:"
for /f "tokens=1-3 delims=/" %%i in ("%d%") do (
set yyyy=%%i
set mm=10%%j
set dd=10%%k
)
set d=!yyyy!-!mm:~-2!-!dd:~-2!
cd /d h:\DCIM/100MEDIA\
for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t^|findstr /b [0-9]') do (
if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" (
echo f | xcopy "%%d" /y "e:\视频\外勤\%d%\"
)
)
) else if /i "%x%"=="z" (
set /p d="请输入视频日期,按回车键:"
for /f "tokens=1-3 delims=/" %%i in ("%d%") do (
set yyyy=%%i
set mm=10%%j
set dd=10%%k
)
set d=!yyyy!-!mm:~-2!-!dd:~-2!
cd /d h:\DCIM/100MEDIA\
for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t^|findstr /b [0-9]') do (
if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" (
echo f | xcopy "%%d" /y "e:\视频\主任\%d%\"
)
)
)
IF not EXIST "e:\视频\%x%\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
)
pause
作者: terse 时间: 2015-5-29 17:13
你看看 “%%a” 和 "!d:~,4!-!d:~5,2!-!d:~8,2!" 这里格式是否一致
作者: 7016427 时间: 2015-5-29 17:43 标题: 【补充说明】根据日期提取文件的bat代码怎么修改?
本帖最后由 7016427 于 2015-5-29 18:30 编辑
回复 5# terse
@echo off&setlocal EnableDelayedExpansion
REM 视频mov,照片jpeg,录音wav
set /p d="请输入视频日期,按回车键:"
REM 日期补零
for /f "tokens=1-3 delims=/" %%i in ("%d%") do (
set yyyy=%%i
set mm=10%%j
set dd=10%%k
)
set d=!yyyy!-!mm:~-2!-!dd:~-2!
cd /d h:\DCIM/100MEDIA\
for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t^|findstr /b [0-9]') do (
if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" (
echo f | xcopy "%%d" /y "e:\视频\外勤\%d%\"
)
)
IF not EXIST "e:\视频\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
)
pause
以上执行正常!主要是巡检仪有两个(外勤、主任)要分开存入。因此,主任的要存入:e:\视频\主任\%d%\
补充:实际提取文件路径都是一样的,只是存放的文件夹有点区别,一个放入“外勤”,另一个放入“主任”的区别。我主要想实现选择,判断来达到这个目的。
作者: yangfengoo 时间: 2015-5-29 20:42
本帖最后由 yangfengoo 于 2015-5-29 21:08 编辑
- @echo off&setlocal EnableDelayedExpansion
- REM 视频mov,照片jpeg,录音wav
- set /p x=W外勤/Z主任:
- if /i "%x%"==w set #=外勤
- if /i "%x%"==z set #=主任
- set /p d="请输入视频日期,按回车键:"
- REM 日期补零
- for /f "tokens=1-3 delims=/" %%i in ("%d%") do (
- set yyyy=%%i
- set mm=10%%j
- set dd=10%%k
- )
- set d=!yyyy!-!mm:~-2!-!dd:~-2!
- cd /d h:\DCIM/100MEDIA\
- for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t^|findstr /b [0-9]') do (
- if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" (
- echo f | xcopy "%%d" /y "e:\视频\%#%\%d%\"
- )
- )
- IF not EXIST "e:\视频\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕! )
- pause
复制代码
回复 6# 7016427
作者: yangfengoo 时间: 2015-5-29 20:54
- IF not EXIST "e:\视频\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
- )
复制代码
这个判断怎么看怎么有问题,不知道楼主怎么测试的
作者: 7016427 时间: 2015-5-29 21:03 标题: 【未解决】根据日期提取文件的bat代码怎么修改?
[未解决]回复 7# yangfengoo
你好!测试失败!黑屏闪一下就过了,并没有提取到文件。我输入“w”回车后没有提示输入日期哪一步!
作者: terse 时间: 2015-5-29 21:04
这个判断怎么看怎么有问题,不知道楼主怎么测试的
yangfengoo 发表于 2015-5-29 20:54
少个 ")"- IF not EXIST "e:\视频\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕! )
复制代码
作者: yangfengoo 时间: 2015-5-29 21:08
回复 9# 7016427
7楼已修改。
作者: 7016427 时间: 2015-5-29 21:09 标题: 【测试失败】根据日期提取文件的bat代码怎么修改?
回复 8# yangfengoo
改为:
IF not EXIST "e:\视频\%#%\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
)
作者: yangfengoo 时间: 2015-5-29 21:14
回复 10# terse
)在下行。
echo f | xcopy "%%d" /y "e:\视频\%#%\%d%\"
怎么会有"e:\视频\%d%"这个路径
IF not EXIST "e:\视频\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕! )
肯定不成立
作者: yangfengoo 时间: 2015-5-29 21:15
回复 12# 7016427
还不行?有没有错误提示,发出来
作者: 7016427 时间: 2015-5-29 21:16
[测试仍然失败]回复 13# yangfengoo
改为:
IF not EXIST "e:\视频\%#%\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
)
作者: 7016427 时间: 2015-5-29 21:17
[没有提示]回复 14# yangfengoo
黑屏就是过了,没有提示输入日期!
作者: 7016427 时间: 2015-5-29 22:17
[测试结果,存在问题]回复 7# yangfengoo
7楼代码测试结果!
作者: 7016427 时间: 2015-5-29 22:52
回复 17# 7016427
@echo off&setlocal EnableDelayedExpansion
REM 视频mov,照片jpeg,录音wav
set /p x=W外勤/Z主任:
if /i "%x%"==w set #=外勤
if /i "%x%"==z set #=主任
set /p d="请输入视频日期,按回车键:"
cd /d h:\DCIM\100MEDIA\
for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t *.mov^|findstr /b [0-9]') do (
if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" (
echo f | xcopy "%%d" /y "e:\视频\%#%\%d%\"
)
)
IF not EXIST "e:\视频\%#%\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕! )
pause
测试,文件夹能按日期命名,但是,以上红色代码语句并没有生效。提取的文件没有按照代码定义的“外勤“或”主任”文件夹存放。
作者: yangfengoo 时间: 2015-5-30 07:28
if /i "%x%"=="w" set #=外勤
if /i "%x%"=="z" set #=主任
作者: 7016427 时间: 2015-5-30 21:15 标题: 【已解决】再次请高手,修改这个代码
@echo off
setlocal EnableDelayedExpansion
set /p x=W外勤/Z主任:
if /i "%x%"=="w" set #=外勤
if /i "%x%"=="z" set #=主任
set /p d="输入日期:"
REM 补零
for /f "tokens=1-3 delims=/" %%i in ("%d%") do (
set yyyy=%%i
set mm=10%%j
set dd=10%%k
)
set d=!yyyy!-!mm:~-2!-!dd:~-2!
cd /d h:\DCIM/100MEDIA\
for /f "tokens=1-3*" %%a in ('dir /a:%-d% /t *.mov^| findstr /b [0-9]') do (
if "%%a"=="!d:~,4!-!d:~5,2!-!d:~8,2!" (
echo f | xcopy "%%d" /y "e:\视频\%#%\%d%\"
)
)
IF not EXIST "e:\视频\%#%\%d%" (echo %d%,没有视频提取!) ELSE (echo %d%,提取视频完毕!
)
pause>nul
3楼老师谢谢老师!
作者: 7016427 时间: 2015-5-30 21:18
[执行错误]回复 1# 7016427
执行时,创建日期文件夹名错误!
测试后,显示错误的日期文件夹名:2015-05-30-10-10,正确的应该显示:2015-05-30
作者: bailong360 时间: 2015-5-30 22:00
delims=/改成delims=-
作者: 7016427 时间: 2015-5-30 22:19 标题: 【已解决】根据日期提取文件的bat代码怎么修改?
[谢谢]回复 19# yangfengoo
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |