V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jackyzy823
V2EX  ›  问与答

求助,win下用批处理对sqlite进行备份出现问题

  •  
  •   jackyzy823 · 2013-08-01 13:25:02 +08:00 · 3022 次点击
    这是一个创建于 4132 天前的主题,其中的信息可能已经有所发展或是发生改变。
    set year=%date:~0,4%
    set month=%date:~5,2%
    set day=%date:~8,2%

    sqlite3 xxx.db ".dump" > %year%-%month%-%day%.sql

    批处理如上
    问题是:在cmd里执行这个文件能正常备份,而直接双击却无法生成备份文件。

    奇怪的是批处理在执行的时候 sqlite3 xxx.db ".dump" 1>%year%-%month%-%day%.sql
    显示的是执行这条命令,但是我实在找不到这个1是从哪里来的?

    求各位V友帮助,谢谢。
    10 条回复    1970-01-01 08:00:00 +08:00
    timonwong
        1
    timonwong  
       2013-08-01 14:02:41 +08:00   ❤️ 1
    a) "1" 代表stdout, batch 就是这样parse的,不加file descriptor的话默认就是1, stderr不使用 "2>" 重定向的话会直接写到控制台。

    b) 时间日期问题我觉得是环境不同,你在命令行里面和Explorer里面的日期格式可能不一样。我觉得最好还是使用这种方法获取时间:

    ```
    setlocal EnableDelayedExpansion
    for /F "skip=1 tokens=1-3" %%A in ('WMIC Path Win32_LocalTime Get Day^,Month^,Year /Format:table') do (
    if "%%B" neq "" (
    set year=%%C
    set month=0%%B
    set day=0%%A
    )
    )
    :: remove additional leading zeros
    set month=%month:~-2%
    set day=%day:~-2%

    :: your logic here
    ```
    vmebeh
        2
    vmebeh  
       2013-08-01 14:09:58 +08:00   ❤️ 1
    批处理文件里面变量要用%%,
    vmebeh
        3
    vmebeh  
       2013-08-01 14:12:51 +08:00
    for /? 里面有说明。
    jackyzy823
        4
    jackyzy823  
    OP
       2013-08-01 14:14:26 +08:00
    @timonwong 其实文件名称不重要,关键是双击这个bat并没有生成文件,而用cmd命令行运行这个bat可以生成,而我需要双击生成
    timonwong
        5
    timonwong  
       2013-08-01 14:16:41 +08:00   ❤️ 1
    @jackyzy823
    刚才代码我试过了,可以双击生成。我之前想的就是date time的区域设置, 你的命令行控制台和Windows Explorer有所不同,直接导致了文件名错误。

    调试你可以简单地在最后加个pause看问题具体出在哪儿。
    jackyzy823
        6
    jackyzy823  
    OP
       2013-08-01 14:21:34 +08:00
    @timonwong 我用普通的文件名也测试过。。。情况依旧 以及感谢您帮我测试。
    timonwong
        7
    timonwong  
       2013-08-01 14:24:08 +08:00   ❤️ 1
    @jackyzy823
    那总有错误信息啊,最后加pause看看之前有什么错误?
    jackyzy823
        8
    jackyzy823  
    OP
       2013-08-01 14:27:19 +08:00
    @timonwong 就单纯地什么都没发生,难道在批处理中需要设置当前路径?
    jackyzy823
        9
    jackyzy823  
    OP
       2013-08-01 14:28:51 +08:00
    @timonwong 嗯,的确是忘记设置路径了,以及感谢您的帮助。
    jackyzy823
        10
    jackyzy823  
    OP
       2013-08-01 14:31:25 +08:00
    @timonwong 不对。。在注册表里给cmd启动是增加了一个AutoRun=。=导致改了路径。。。==|||
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1069 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:22 · PVG 03:22 · LAX 11:22 · JFK 14:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.