小编sam*_*sam的帖子

'漂亮打印'窗口%PATH%变量 - 如何拆分';' 在CMD shell中

我想在Windows CMD提示符中运行一个简单的单行程序来打印我的%PATH%变量,每行一个条目.

我试过这个:for /f "delims=;" %a in ("%path%") do echo %a但这只打印第一个条目:

Z:\>for /f "delims=;" %a in ("%path%") do echo %a

Z:\>echo c:\python25\.
c:\python25\.
Run Code Online (Sandbox Code Playgroud)

另外从上面的输出中可以看出,这也是打印echo %a命令和输出.有没有办法阻止这个?

如果我尝试一个类似的命令,我会得到所有条目,但仍然得到echo %a输出垃圾邮件的结果.我不明白为什么以下打印所有条目,但我的尝试%PATH%没有.我怀疑我不懂/F开关.

Z:\>for %a in (1 2 3) do echo %a

Z:\>echo 1
1

Z:\>echo 2
2

Z:\>echo 3
3
Run Code Online (Sandbox Code Playgroud)

windows path batch-file

47
推荐指数
4
解决办法
2万
查看次数

是否可以使用Windows命令行编辑二进制文件?

Windows中是否有一种方法可以从命令行编辑二进制文件?即可以写入批处理文件的方式?

我希望能够在现有文件中编辑已知位置的单个字节.

这个现有问题[1]已经解决,但这是一个Linux解决方案.我正在为Windows寻找类似的东西.

背景

从Steam下载时,GTA 1中存在一个错误,即保存游戏数据文件在退出时会损坏.结果,游戏可以在第一时间播放,但随后崩溃.事实证明,这可以通过将文件中的第5个字节(即地址0x04处的字节)从x00更改为x06 [2]来解决.

我可以轻松地在Python中执行此操作,例如:

with open("PLAYER_A.DAT", "rb") as f:
    bytes = f.read()
bytes = bytes[:4] + '\x06' + bytes[5:]
with open("PLAYER_A.DAT", "wb") as g:
    for b in bytes: g.write(b)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我宁愿在执行以下操作的批处理作业中执行此操作:

  • 修复数据文件
  • 推出GTA

我可以做的东西,对我来说(使用Python)的作品,但不会帮助没有的Python谁随机其他人(是的,我知道这是很容易得到和安装,但仍然).同样,有一个免费软件声称可以做到这一点,但我不想在我的电脑上运行随机的.exe,我认为其他人也不应该.出于这个原因,我想提出一个批处理文件,人们可以检查,并且 - 如果他们对它的作用感到满意 - 那就自己运行.

谢谢你的帮助!

[1] CLI:在地址写入字节(来自命令行的hexedit/modify binary)

[2] http://forums.steampowered.com/forums/showthread.php?t=1597746

[edit]修复了Python脚本,因为我发现它不能正常工作(file.read()返回一个不可变对象,所以你不能只更新其中一个值).

windows cmd binaryfiles edit

5
推荐指数
2
解决办法
2万
查看次数

Python SysLogHandler不工作:socket.error'连接被拒绝'

我正在尝试使用标准Linux syslogger配置Python应用程序以记录到/ var/log/messages.但是,当我尝试创建syslog处理程序时,我收到错误socket.error: [Errno 111] Connection refused.

>>> import logging
>>> import logging.handlers
>>> logger = logging.getLogger("my_logger")
>>> logger.setLevel(logging.DEBUG)
>>> handler = logging.handlers.SysLogHandler(facility=logging.handlers.SysLogHandler.LOG_DAEMON, address="/var/log/messages")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/logging/handlers.py", line 715, in __init__
    self._connect_unixsocket(address)
  File "/usr/lib64/python2.6/logging/handlers.py", line 731, in _connect_unixsocket
    self.socket.connect(address)
  File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)

/etc/rsyslog.conf配置了以下行:

kern.notice;*.err;local0.info;mail.none;authpriv.none;cron.none;local1.none;daemon.notice /var/log/messages
Run Code Online (Sandbox Code Playgroud)

我猜这个问题是在syslog配置中的某个地方,但据我所知,我做了正确的事情:

  • 我正在尝试创建Python SysLogHandler,并告诉它使用哪个文件
  • 我告诉SysLogHandler使用DAEMON设施
  • rsyslog.conf设置为将守护程序日志发送到/ var/log/messages(以及其他日志)

还有什么我应该做的才能使这项工作?

以前我刚刚使用了一个,logging.FileHandler但是当消息文件换行时,这不能正常工作,Python继续记录到旧文件.

python logging syslog

4
推荐指数
1
解决办法
5721
查看次数

标签 统计

windows ×2

batch-file ×1

binaryfiles ×1

cmd ×1

edit ×1

logging ×1

path ×1

python ×1

syslog ×1