[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样根据文件大小执行不同行命令?

问题背景:批处理1.bat(也可能是5.bat)23目录(也许我回放在e:\321目录),文件2.bin(也可能是5.sys也许是win7也可能是xp)在桌面,也可能在F:\456
  1.bat和2.bin的关系:将2.bin拖拽到1.bat自动作分解处理
  判断文件大小,执行不同行命令
如果我拖拽的文件大于30M,那么跳转到3
如果我拖拽的文件小于30M,那么跳转到4
这个应该怎么写呢?

  目录设定问题
批处理:
"%path_1%\1.exe" -b "%~1"
md BT\123
cd BT\122
for /f %%i in ('dir /ad /b 1234567*') do move %%i ..\123>nul&echo 已移动: %%i
cd ..
。。。。。以后省略

命令解释:拖拽文件到批处理,得到BT\122及BT\122下一文件夹;然后移动BT\122下所有以1234567开头的文件夹移动到md BT\123
然后回到%~1文件所处目录,也就是如何设置cd或pushd来回到桌面继续执行以后的命令!






说得不清楚请见量,我是一个初学者!请多指点

[ 本帖最后由 zhxixeng12 于 2010-10-11 09:23 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

判断文件大小,执行不同行命令,我用了:
dir "%~1" |find "18874368 %~1"&&goto a
goto 4

但是小于18M的文件能跳到4,大于18M的文件也跳转到4!

似乎这个命令的意思是等于18m才跳转到a,不等于18m就跳转到4。如何改为小于和大于18m,分别跳转到4和a那?

18874368为18M

[ 本帖最后由 zhxixeng12 于 2010-10-8 11:54 编辑 ]

TOP

  1. set /a size=30*1024*1024
  2. if "%~z1" grt %size% goto 3
  3. if "%~z1" les %size% goto 4
复制代码
你的%1和BT\123还有BT\122是什么关系?

TOP

原帖由 TX_kakashi 于 2010-10-8 12:07 发表
set /a size=30*1024*1024
if "%~z1" grt %size% goto 3
if "%~z1" les %size% goto 4你的%1和BT\123还有BT\122是什么关系?


谢谢!!

%1是我拖拽的文件,比如是1.bin
BT是文件夹,123和122是BT下的子文件夹
比如1.bin在d盘根目录下,那么BT文件夹也是D盘根目录!!

TOP

原帖由 TX_kakashi 于 2010-10-8 12:07 发表
set /a size=30*1024*1024
if "%~z1" grt %size% goto 3
if "%~z1" les %size% goto 4你的%1和BT\123还有BT\122是什么关系?


刚才测试了,我拖拽200多M的文件和3M多的文件都跳转到4。不能跳转到a
  1. set /a size=30*1024*1024
  2. if "%~z1" grt %size% goto a
  3. if "%~z1" les %size% goto 4
复制代码

TOP

意思就是1.bin和BT文件夹在一起咯。这个没测试过,你先试试
  1. @echo off&setlocal
  2. "%path_1%\1.exe" -b "%~1"
  3. set "_path=%~dp1"
  4. cd/d "%_path%"
  5. md "%_path%\BT\123"
  6. pushd "%_path%\BT\122"
  7. for /f "delims=" %%a in ('dir/b/s/a-d 1234567*') do (
  8.      copy "%%a" "%_path%\BT\123\"
  9. )
  10. popd
  11. pause
复制代码

TOP

原帖由 TX_kakashi 于 2010-10-8 12:33 发表
意思就是1.bin和BT文件夹在一起咯。这个没测试过,你先试试@echo off&setlocal
"%path_1%\1.exe" -b "%~1"
set "_path=%~dp1"
cd/d "%_path%"
md "%_path%\BT\123"
pushd "%_path%\BT\122"
for /f "delims=" % ...


谢谢!麻烦你那么多次!

文件大小判断那个再麻烦您给弄弄!

TOP

原来是个低级错误...
  1. @echo off
  2. set size=31457280
  3. if %~z1 gtr %size% goto 3
  4. if %~z1 lss %size% goto 4
  5. pause
复制代码
1

评分人数

TOP

原帖由 TX_kakashi 于 2010-10-8 12:52 发表
原来是个低级错误...@echo off
set size=31457280
if %~z1 gtr %size% goto 3
if %~z1 lss %size% goto 4
pause


谢谢您了。问题都解决了!

只是目录跳转那个,以我目前的水平理解不了!!!看来得慢慢学习!

TOP

原帖由 TX_kakashi 于 2010-10-8 12:33 发表
意思就是1.bin和BT文件夹在一起咯。这个没测试过,你先试试@echo off&setlocal
"%path_1%\1.exe" -b "%~1"
set "_path=%~dp1"
cd/d "%_path%"
md "%_path%\BT\123"
pushd "%_path%\BT\122"
for /f "delims=" % ...


你的这个命令我调整了一下,在win7可用。xp下就提示语法不正确了!!

次命令,在win7下能把123从456里移动到%_path%目录。xp下就不行了!
cd/d %_path%\ 456
move 123 %_path%\123

TOP

cd/d "%_path%\ 456"
move 123 "%_path%\123"
加引号可以用了!
回家还要测试win7!

TOP

返回列表