新手问题 bat 中函数的返回值

lzm110 · 2013年06月04日 · 最后由 luikore 回复于 2013年06月07日 · 5061 次阅读
:set /a nFileSize=0
(
call :getFileSize D:\test1\sendszl2data\20111031\SZSEL2-20111031.tar.gz
call :getFileSize D:\test1\sendszl2data\20111031\SZSEL2-20111031.tar.gz
echo %nFileSize%
)

(
call :getFileSize D:\test1\sendszl2data\20111031\SZSEL2-20111031.tar.gz
echo %nFileSize%
)

pause


:获取指定文件的大小
:getFileSize
@echo off
set strFilePath=%1%
set /a nFileSize=0
for /f "delims=" %%i in ('dir  %strFilePath% /s/b') do set  nFileSize=%%~zi
echo infun %nFileSize%
goto :EOF

为什么第一次结果是错的?

batch 太难搞了... 在 stackoverflow.com 上问才会有会用的给你回答。

建议用 ruby 解决:

puts File.stat('D:\test1\sendszl2data\20111031\SZSEL2-20111031.tar.gz').size

#1 楼 @luikore puts 把数据放哪里了 怎么用怎么取啊

#2 楼 @lzm110 puts 是打印...

a_var = File.stat('D:\test1\sendszl2data\20111031\SZSEL2-20111031.tar.gz').size
puts a_var

你可以到 http://rubyinstaller.org/ 下载一个 ruby 玩玩

或者直接到 http://www.ruby-lang.org/zh_cn/ 上试用下

需要 登录 后方可回复, 如果你还没有账号请 注册新账号