首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理脚本不再工作了?

批处理脚本不再工作了?
EN

Stack Overflow用户
提问于 2011-05-06 15:05:57
回答 3查看 1.1K关注 0票数 2

我正在使用Ant、Java和CVSNT处理控制台窗口中的命令行。(Unix geek被迫生活在Windows世界中)

当我运行cvsnt命令时,批处理脚本不再工作。这包括我使用的几个命令,包括antvim

我可以打开一个新的控制台窗口,在这个窗口中,一切都很好,所以它一定是关于控制台窗口中的特定环境的,每当我在cvsnt中做一些事情时,它就会发生。

有什么想法吗?有什么我该找的吗

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-06 21:18:11

我今天也遇到了同样的问题。问题是cvs.exe对代码页做了一些事情。我无法解释到底是什么,但是如果您重置代码页,bat文件就会重新开始工作。

一个例子可能会使这一点变得更清楚(在英国,我的默认代码页是850,但当我的Windows默认值为437时,也会发生同样的情况)

代码语言:javascript
复制
>echo @echo .bat files are working > test.bat

>test.bat
.bat files are working

>chcp
Active code page: 850

>cvs update
? test.bat
cvs update: Updating .

>test.bat

>chcp
Active code page: 850

>test.bat

>chcp 850
Active code page: 850

>test.bat
.bat files are working

>

因此,尽管代码页显然没有受到影响,但重置它将恢复.bat文件的功能。

因此,为了解决这个问题,我使用了如下脚本:

代码语言:javascript
复制
@echo off
(
chcp 850 > NUL
"C:\Program Files\CVSNT\cvs.exe" %*
chcp 850 > NUL
)

并通过它调用cvs。如果有人能评论这种代码页行为发生的原因,我很想知道。

票数 6
EN

Stack Overflow用户

发布于 2012-12-13 16:38:20

CVSNT2.5.05将输出代码页设置为65001 (UTF-8),而不将其设置回。

不幸的是,Windows对该代码页的处理中断了,因此发生了一些糟糕的事情(包括无法运行批处理文件)。

解决方法之一是使用CHCP将代码页(输入和输出)重置为已知的工作页(437、850、1252或其他),最好是位于与CVS命令相同的行上。例如:

代码语言:javascript
复制
> cvs update & chcp 1252

或者,如果您觉得更花哨,您实际上可以保存当前的代码页并恢复它。

例如,下面是一个批处理文件,用于更新工作目录中的所有模块:

代码语言:javascript
复制
@echo off
setlocal enableextensions

for /f "tokens=4" %%i in ('chcp') do set hack=chcp %%i

for /d %%i in (*) do (
  if exist %%i\cvs (
    echo.
    echo *** updating %%i
    pushd %%i
    cvs -q update -A -P -d | find /V "?" & %hack% >NUL
    popd
))

echo.
echo *** STATUS ***
cvs -q status -q | find /V "?" & %hack% >NUL

endlocal
pause

在同一行调用CHCP的重要性是,如果代码页是UTF,批处理文件的下一行将不会被处理。

当然,修复bug将是一个更好的解决方案。

票数 3
EN

Stack Overflow用户

发布于 2011-05-06 16:52:50

一些版本控制客户端(我正在和您讨论ClearCase)启动了一个子shell,它可能会也可能不会带来以前的环境。我们放弃了在Unix上编写ClearCase脚本的尝试,因为我们无法编写包含CC命令的脚本,因为它们打开了一个子subshell,并且父脚本将自己继续进入la-la-land。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5913296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档